UVA 10035
输入两个数,做加法,求加法过程中的进位次数,字符串接收,用高精度做
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int i,j,l,lena,lenb; 6 char a[100],b[100]; 7 int ans[12]; 8 while(scanf("%s%s",a,b)) 9 { 10 if(strcmp(a,"0")==0&&strcmp(b,"0")==0) 11 break;//当输入两个零时退出 12 for(i=0;i<12;i++) 13 ans[i]=0; 14 lena=strlen(a)-1; 15 lenb=strlen(b)-1; 16 i=0; 17 while(lena>=0) 18 { 19 ans[i]+=(a[lena]-'0'); 20 i++; 21 lena--; 22 } 23 i=0; 24 while(lenb>=0) 25 { 26 ans[i]+=(b[lenb]-'0'); 27 i++; 28 lenb--; 29 }//把两个字符转化为数值并加到结果中 30 l=0; 31 for(i=0;i<11;i++) 32 { 33 if(ans[i]>9) 34 { 35 ans[i+1]++; 36 ans[i]-=10; 37 l++;//发现有进位就加一 38 } 39 } 40 if(l==0) 41 printf("No carry operation.\n"); 42 else if(l==1) 43 printf("%d carry operation.\n",l); 44 else 45 printf("%d carry operations.\n",l);//注意输出格式 46 } 47 return 0; 48 }