简单的大数加法,按照竖式的计算方式从最低位往最高位加,记住进位即可。
#include<stdio.h> #include<string.h> int main() { char str1[101]; // 始终将str1作为中间结果 char str2[101]; int ans[101]={0}; // 中间结果的int表示 scanf("%s",str1); while(scanf("%s",str2) != EOF) { if(!strcmp(str2,"0")) break; else { int num1[101]={0}; int num2[101]={0}; int n1 = strlen(str1); int n2 = strlen(str2); //将str1和str2按倒序(即从低位到高位)存入num1和num2 for(int i = 0;i<n1;i++) num1[i] = str1[n1-1-i] - '0'; for(int i = 0;i<n2;i++) num2[i] = str2[n2-1-i] - '0'; int n = n1>n2?n1:n2; int jinwei = 0; for(int i = 0;i<n;i++) { ans[i] = (num1[i] +num2[i] + jinwei) %10; jinwei = (num1[i] +num2[i] + jinwei) /10; } if(jinwei) // 最高位若也有进位 { ans[n] = jinwei; n++; } for(int i = 0;i<n;i++) str1[i] = ans[n-1-i]+'0'; } } puts(str1); return 0; }