解题思路:
详见代码,不懂可以留言偶
注意事项:
每次循环完成后都要清空数组。
参考代码:
//大数求和,所以必须用字符串解决计算 #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语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题8.4 (Java代码)浏览:788 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:633 |
P1001 (C语言代码)浏览:836 |
printf基础练习2 (有点不明白)浏览:887 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1685 |
简单的a+b (C语言代码)浏览:674 |
众数问题 (C语言代码)浏览:911 |
Cylinder (C语言描述,蓝桥杯)浏览:1279 |
a+b浏览:452 |