求a+b.
思路如下:
1.定义一个函数使数组逆向输出;
2.定义三个数组,求两个数组的长度,调用字符串逆值函数,比较两个数组的长度,当某个数长度小的时候,就在前面补“0”,之后让i依次为数组里的数,求该位数字的值,再求进位值。
3.循环结束时,当进位值为1时,让最后结果前面加“1”,再将数组依次输出即可。
#include <stdio.h> #include <string.h> void rev(char str[],int len) { int t,i; for(i = 0; i < len / 2; i++){ t = str[i]; str[i] = str[len - i -1]; str[len - i -1] = t; } } int main() { char str1[1000],str2[1000],sum[1000]; int len,len1,len2,i; int l1,l2,val,carry; while(scanf("%s %s",str1,str2) != EOF){ len1 = strlen(str1); len2 = strlen(str2); len = len1 < len2 ? len2:len1; rev(str1,len1); rev(str2,len2); carry = 0; for (i = 0;i < len;i++){ l1 = i < len1 ? str1[i] - '0':0; l2 = i < len2 ? str2[i] - '0':0; val = (l1 + l2 + carry) % 10; carry = (l1 + l2 + carry) / 10; sum[i] = val + '0'; } if (carry == 1) putchar('1'); for (i = len-1;i >= 0;i--){ putchar(sum[i]); } puts(""); }return 0; }