A + B Problem II:
本题下面的代码并没有AC,找了很久也没发现错误在哪里,仅提供一个思路,希望大家予以指正。
#include<iostream> #include<string.h> using namespace std; #define N 1002 char str1[N],str2[N],str3[N],str4[N],sum[N]; void Reverse(char str[],int len){ int i,j; char temp; for(i=0,j=len-1;i<j;++i,--j){ temp=str[i]; str[i]=str[j]; str[j]=temp; } } int main(){ int n; cin>>n; cin.ignore(); int count=1; while(n--){ cin>>str1>>str2; int len1=strlen(str1); int len2=strlen(str2); strcpy(str3,str1); strcpy(str4,str2); Reverse(str1,len1); Reverse(str2,len2); str1[len1]='0'; str2[len2]='0'; int len=len1>len2?len1:len2; int t=0; //进位 int i; for(i=0;i<len;++i){ sum[i]=((str1[i]-'0')+(str2[i]-'0')+t)%10+'0'; t=((str1[i]-'0')+(str2[i]-'0')+t)/10; } if(t!=0){ sum[len]=t+'0'; len+=1; } cout<<"Case "<<count<<":"<<endl; cout<<str3<<" + "<<str4<<" = "; for(i=len-1;i>=0;--i) cout<<sum[i]; cout<<endl; if(n!=0) cout<<endl; count++; memset(str1,'0',N*sizeof(char)); memset(str2,'0',N*sizeof(char)); memset(str3,'0',N*sizeof(char)); memset(str4,'0',N*sizeof(char)); memset(sum,'0',N*sizeof(char)); } }