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));
    }
}