查看原题目请点我这里
解题思路:这道题应该算是大数加法,只是换了种说法而已,主要注意两个细节,字符串需要先反转后再从个位开算,另外两个字符不一定相同长度,需要补充成一样长。

#include<cstdio>
#include<cstring>
int cnt;
void add(char s[],char t[]){
    int c=0;
    int len1=strlen(s);
    int len2=strlen(t);
    int len=len1>len2?len1:len2;
    for(int i=0;i<len;i++){
        int A=i<len1?s[i]-'0':0;
        int B=i<len2?t[i]-'0':0;
        c=(A+B+c)/10;
        if(c==1) cnt++;
    }
}
void reverse(char s[]){
    int len=strlen(s);
    for(int i=0;i<len/2;i++){
        int tmp=s[i];
        s[i]=s[len-1-i];
        s[len-1-i]=tmp;
    }
}
int main(){
    char str1[15],str2[15];
    while(scanf("%s%s",str1,str2)!=EOF){
        if(str1[0]=='0'&&str2[0]=='0') break;
        cnt=0;
        reverse(str1);
        reverse(str2);
        add(str1,str2);
        if(cnt==0)
            printf("No carry operation.\n");
        else if(cnt==1)
            printf("1 carry operation.\n");
        else 
            printf("%d carry operations.\n",cnt);
    }


    return 0;
}