解题思路:跟小学计算列竖式一样,搞清楚进位情况就行。

注意事项:和列竖式一样,从每个数组的最后一位数字开始往前计算,再判断进位。

参考代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char a[201];
    char b[201];//定义两个数组
    char c[201]={0};//存贮结果的数组
    scanf("%s",a);
    scanf("%s",b);//输入两个数组
    int lena,lenb;
    lena = strlen(a);
    lenb = strlen(b);//获得两个数组的长度
    int i = lena-1;
    int j = lenb-1;//分别用i,j代表两个数组的最后一位数
    int k = 0;//记录当前位的数组序号
    int tem = 0;//进位
    while(i>=0||j>=0||tem!=0){
        int sum = tem;
    if(i>=0){
        sum+=a[i]-'0';//把字符转成数字
        i--;
    }
    if(j>=0){
        sum+=b[j]-'0';
        j--;
    }
    c[k]=(sum%10)+'0';//把数字转成字符储存起来
    k++;让数组往前走
    tem = sum/10;    //去除已经处理过的最后一位数
    }    
    for(int m=0;m<k/2;m++){
        char t = c[m];
        c[m] = c[k-m-1];
        c[k-m-1] = t;
    }//由于是从最后一位开始的,所以整个数组要逆序输出
    int start = 0;//判断前导0的情况
    while(c[start]==0&&start<k-1){
        start++;让数组前进
    }
    printf("%s\n",c+start);//c表示数组的第一位,加start并不是数学意义上的相加,而是用start的值去代替数组中的前导0
    return 0;
}


点赞(1)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论