问题 C: A+B Problem (6)
时间限制: 1 Sec 内存限制: 128 MB
提交: 486 解决: 253
[提交][状态][讨论版]
题目描述
很长整数是指无法用long long型数存储的数,因此需要用字符串数组来存储两个被加数,相加的结果也保存于字符数组中,假如被加数长度不超过十进制100位,请编程实现该加法程序并将相加结果输出。
输入
两个很长的整数
输出
很长整数加法结果
样例输入
35555555555555555555
55555555555555555555
样例输出
91111111111111111110
我的原代码是这样的:
1 #include<stdio.h> 2 #include<string.h> 3 void fun(char a[],char b[],char c[]) 4 { 5 int i,j,jinw=0,ci=0,x,y,z,k; 6 char tmp; 7 i=strlen(a)-1; 8 j=strlen(b)-1; 9 while(i>=0||j>=0) //检索直到两数组都被加完 10 { 11 if(i<0) //当a数组被加完时 12 x=0; 13 else 14 x=a[i]-'0'; 15 if(j<0) //当b数组被加完时 16 y=0; 17 else 18 y=b[j]-'0'; 19 20 z=x+y; 21 22 if(jinw) //如果有进位 23 z++; 24 if(z>9) //考虑当前数累加是否会导致下次计算进位 25 { 26 jinw=1; 27 z%=10; 28 } 29 else 30 jinw=0; 31 c[ci++]=z+'0'; 32 i--; 33 j--; 34 } 35 if(jinw) //考虑最后一位是否还有进位 36 c[ci++]='1'; 37 c[ci]='