有解決呀。
#include<stdio.h> #include<string.h> #define bool int #define false 0 #define true 1 int main() { int nlen1; //len1,len1的長度 int len1[200],sum[200]; int i,j; char a[200]; int bStartOutput=false; //freopen("in.txt","r",stdin); memset(sum,0,sizeof(sum)); while(scanf("%s",a)&&*a!='0') { memset(len1,0,sizeof(len1)); nlen1=strlen(a); j=0; for(i=nlen1-1;i>=0;i--) len1[j++]=a[i]-'0'; for(i=0;i<=nlen1;i++) { sum[i]=sum[i]+len1[i]; if(sum[i]>=10) { sum[i]-=10; sum[i+1]=sum[i+1]+1; } } } for(i=nlen1+1; i >= 0; i -- ) { if( bStartOutput) printf("%d", sum[i]); //如果多余的0 已經都跳過 else if( sum[i] ) { printf("%d", sum[i]); bStartOutput = true; //碰到第一個非0 的值,就說明多余的 } } printf("\n"); if(bStartOutput==false) printf("0\n"); return 0; } #include<stdio.h> #include<string.h> #define bool int #define false 0 #define true 1 int main() { int nlen1; //len1,len1的長度 int len1[200],sum[200]; int i,j; char a[200]; int bStartOutput=false; //freopen("in.txt","r",stdin); memset(sum,0,sizeof(sum)); while(scanf("%s",a)&&*a!='0') { memset(len1,0,sizeof(len1)); nlen1=strlen(a); j=0; for(i=nlen1-1;i>=0;i--) len1[j++]=a[i]-'0'; for(i=0;i<=nlen1;i++) { sum[i]=sum[i]+len1[i]; if(sum[i]>=10) { sum[i]-=10; sum[i+1]=sum[i+1]+1; } } } for(i=nlen1+1; i >= 0; i -- ) { if( bStartOutput) printf("%d", sum[i]); //如果多余的0 已經都跳過 else if( sum[i] ) { printf("%d", sum[i]); bStartOutput = true; //碰到第一個非0 的值,就說明多余的 } } printf("\n"); if(bStartOutput==false) printf("0\n"); return 0; }