解题思路:跟小学计算列竖式一样,搞清楚进位情况就行。
注意事项:和列竖式一样,从每个数组的最后一位数字开始往前计算,再判断进位。
参考代码:
#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;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复