解题思路:

 详见代码,不懂可以留言偶






注意事项:

每次循环完成后都要清空数组。






参考代码:

//大数求和,所以必须用字符串解决计算 
#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;
}


点赞(3)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

5年前 回复TA
不错,虽然我还没研究,但看完你的代码,认为还是很容易明白的