解题思路:
详见代码,不懂可以留言偶
注意事项:
每次循环完成后都要清空数组。
参考代码:
//大数求和,所以必须用字符串解决计算 #include <stdio.h> #include <string.h> int main() { char a[1000],b[1000]; //保存两个大数 int i,t1,t2,a1[1000]={0},b1[1000]={0},a2,b2; // 注意将两个数组初始化全为0 while(scanf("%s%s",a,b)!=EOF) { a2=strlen(a); //计算两个数组的长度 b2=strlen(b); if(a2>b2) t1=a2; //保存最长的数组 else t1=b2; t2=t1; for(i=0;i<a2;i++,t1--) // 因为求加法,所以在数组中储存的数必须倒着想加,也方便进位 a1[t1]=a[a2-1-i]-'0'; //用AS码值将字符数字转化为数字储存在数组中 for(t1=t2,i=0;i<b2;i++,t1--) b1[t1]=b[b2-1-i]-'0'; for(i=t2;i>=0;i--) //因为有可能加的时候溢出来所以又多了一位 { a1[i]+=b1[i]; //两数相加 注意逢十进一 if(a1[i]>=10) { a1[i]-=10; a1[i-1]++; } } if(a1[0]!=0) //考虑到第一个数可能为零 for(i=0;i<=t2;i++) printf("%d",a1[i]); else for(i=1;i<=t2;i++) printf("%d",a1[i]); printf("\n"); memset(a1,0,sizeof(a1)); //调用该函数时需要引用头文件string.h, memset(b1,0,sizeof(b1)); //清空数组memset(a,0,sizeof(a)); } return 0; }
0.0分
0 人评分
汽水瓶 (C++代码)(直接n/2就可以了)浏览:1103 |
三进制小数 (C++代码)(第11位大于1.5才能进位)浏览:1151 |
校门外的树 (C语言代码)浏览:702 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:567 |
1017题解浏览:605 |
1012题解浏览:871 |
C二级辅导-温度转换 (C语言代码)浏览:732 |
震宇大神的杀毒软件 (C语言代码)浏览:1080 |
简单的a+b (C语言代码)浏览:631 |
最好的,浏览:564 |