大致的思想:把数用字符串数组保存,然后转换到int型数组,最后完成加法。
#include <iostream> using namespace std; void add(const char *str1,const char *str2) { int len1 = strlen(str1); int len2 = strlen(str2); int result[1000]; int a1[1000]; int a2[1000]; memset(result,0,sizeof(result)); memset(a1,0,sizeof(a1)); memset(a2,0,sizeof(a2)); int i,j; for(i=len1-1;i>=0;--i) a1[i] = str1[i] - '0'; for(j=len2-1;j>=0;--j) a2[j] = str2[j] - '0'; int k=0; for(i=len1-1,j=len2-1;i>=0&&j>=0;--i,--j,++k) { int temp = result[k] + a1[i] + a2[j]; // 注意点一 result[k] = temp%10; result[k+1] = temp/10; } if(i>=0&&j<0) { for(i;i>=0;--i,++k) { int temp = result[k] + a1[i]; result[k] = temp%10; result[k+1] = temp/10; } } if(j>=0&&i<0) { for(j;j>=0;--j,++k) { int temp = result[k] + a2[j]; result[k] = temp%10; result[k+1] = temp/10; } } while(result[k]==0&&k>0) //注意点二 k = k-1; for(i=k;i>=0;--i) cout << result[i]; cout <<endl; } int main() { int num; char str1[1000],str2[1000]; int ci = 1; cin >> num; while(ci<=num) { cin >> str1 >> str2; if(ci!=1) cout<<endl; cout<<"Case "<<ci++<<":"<<endl; //格式注意 cout << str1 <<" + "<<str2<<" = "; add(str1,str2); } return 0; }