C语言大整数加法

C语言大整数加法C 语言实现大整数加法题目描述 1 大整数加法总时间限制 1000ms 内存限制 65536kB 描述求两个不超过 200 位的非负整数的和 输入有两行 每行是一个不超过 200 位的非负整数 可能有多余的前导 0 输出一行 即相加后的结果 结果里不能有多余的前导 0 即如果结果是 342 那么就不能输出为 0342 样例输入

C语言实现大整数加法

 #include 
  
    #include 
   
     int main(void) { int bigInteger_1[201] = {0}; // 用来存放大整数1的整型数组 int bigInteger_2[201] = {0}; // 用来存放大整数2的整型数组 char sNum_1[201] = {'\0'}; // 用来接收用户输入的字符串形式的大整数1 char sNum_2[201] = {'\0'}; // 用来接收用户输入的字符串形式的大整数2 //输入大整数1和大整数2 scanf("%s %s", sNum_1, sNum_2); /* 这两个循环的功能均是将字符串中的字符大整数,转换为int型数组中的整型值 并且转换后的int型数组中的低位序存储的是大整数的低位,即bigInteger_1[0] 存放的是大整数的个位,依次类推 */ for (int i = 0, j = strlen(sNum_1) - 1; j >= 0; ) { bigInteger_1[i++] = sNum_1[j--] - '0'; } for (int i = 0, j = strlen(sNum_2) - 1; j >= 0; ) { bigInteger_2[i++] = sNum_2[j--] - '0'; } //进行大整数的加法 int k = 0; while (k <= 200) { bigInteger_1[k] += bigInteger_2[k]; //将大整数从低位到高位依次相加 if (bigInteger_1[k] >= 10) { bigInteger_1[k+1]++; bigInteger_1[k] -= 10; } k++; } /* 去除前导零将大整数加法的结果进行输出,思路是,从加完后的大整数的最高位开始寻找 找到第一个不为零的数字后,记录这个不为零的数字在bigInteger数组中的索引,如果全部 数字全部为零,那么就输出零,否则就输出大整数中第一个不为零的数字及其后面的所有 数字。 */ int mark = 0; // 用来记录第一个不为零的数字的索引 int i = 0; for (i = 200; i >= 0; i--) { if (bigInteger_1[i] != 0) { mark = i; // 记录大整数中第一个不为零的数字的索引 break; // 结束循环 } } /* 如果i的值等于-1,说明遍历完大整数数组,也没有发现大整数数组中有存在非零的数 因此就可以判定大整数加完之后的结果就是零 */ if (i == -1) { printf("0\n"); } else { for (int i = mark; i >= 0; i--) { printf("%d", bigInteger_1[i]); // 从大整数中第一个不为零的索引开始进行遍历输出 } putchar('\n'); } return 0; } 
    
  

提交结果
在这里插入图片描述
注意事项:




  1. 忘记将bigInteger数组进行初始化,因为如果忘记将该数组中的全部内容全部初始化,就会导致数组中的全部初始值就是不确定的,这样在去除前导零时就会出错
  2. 在将字符串中的字符数字转换到int型数组中时,一定要分清楚int型数组的低位序存放的是大整数的低位还是高位,因为这样会影响大整数的加法操作
  3. 在进行大整数加法时,一定要从大整数的最低位开始相加,相加时不要忘记进位
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177643.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:02
下一篇 2026年3月26日 下午7:02


相关推荐

  • phpstrom2021激活码_在线激活

    (phpstrom2021激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    88
  • 「数学」夹角公式_夹角公式cos

    「数学」夹角公式_夹角公式cos内容设直线$l_1$、$l_2$的斜率存在,分别为$k_1$、$k_2$,$l_1$与$l_2$的夹角为$\theta$,则$\tan\theta=\left|\fr

    2022年8月3日
    9
  • 手把手教你搭建智能工作流高级篇,n8n+Deepseek大模型保姆级教程

    手把手教你搭建智能工作流高级篇,n8n+Deepseek大模型保姆级教程

    2026年3月15日
    2
  • 网线RJ45接口针脚[通俗易懂]

    网线接头分两类:DTE:连接到网络中的终端设备,如连PC机网卡的网线DCE:网络设备间连接。如路由器接交换机,或交换机接交换机RJ45接头(水晶头)的接口定义有8个镀金接片的面向上,最左边是第1脚,最右边是第8脚:RJ45网线插头线序接网线有两种线序:T568A和T568B。交叉网线和直连网线直连网线的两端均按T568B连接,用于连接主机和设备,即DTE与DCE,如:电脑←—→ADSL猫、电脑←—→ADSL路由器的LAN口、电脑←—→集线器或交换机等。交叉网线的一端按T568B接,

    2022年4月15日
    53
  • sdio接口定义_sdio接口

    sdio接口定义_sdio接口转:https://www.cnblogs.com/hellokitty2/p/10981084.htmlSDIO接口一、SDIO简介SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。SDIO1.0标准定义了两种类型的SDIO卡:1.全速的SDIO卡,传输率可以超过100Mbps;2.低速的SDIO卡,支援的时脉速率…

    2022年10月4日
    5
  • 用Cursor开发微信小程序全攻略:从0到上线的保姆级教程

    用Cursor开发微信小程序全攻略:从0到上线的保姆级教程

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号