UVA 10035

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=976

输入两个数,做加法,求加法过程中的进位次数,字符串接收,用高精度做

View Code
 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 }

 

posted @ 2013-02-19 09:59  执着追求的IT小小鸟  阅读(109)  评论(0编辑  收藏  举报