正文

stu(1030)2005-08-30 20:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/4270.html

分享到:

这是汕头大学的第1030道题,答案:
#include<stdio.h>
#include<string.h>

int change(char C[],int k)
{
    int i;
    for(i=0;i<k;i++)
        {
            if(C[i]/10)
            {
                C[i]=C[i]%10;
                C[i+1]++;
            }
        }
    if(C[i])
        k++;
    return k;
}

int main()
{
    char A[52],B[52],C[52];
    int len1,len2,i,j,k;
    while(scanf("%s",A)!=EOF)
        {
            getchar();
            scanf("%s",B);
            for(k=0;k<52;k++)
                C[k]=0;
            len1=strlen(A);
            len2=strlen(B);
            i=len1-1;
            j=len2-1;
            k=0;
            while(i>=0&&j>=0)
                {
                    C[k++]=A[i--]+B[j--]-2*48;
                }
            while(i>=0)
                {
                    C[k++]=A[i--]-48;
                }
            while(j>=0)
                {
                    C[k++]=B[j--]-48;
                }
            k=change(C,k)-1;
            for(i=k;i>=0;i--)
                printf("%d",C[i]);
            printf("\n");
        }
    return 0;
}
讲解:1由于所要加的两个数太大了,超出了长整树所能加的范围,所以想到用两个数组来存放数,应此
       先把数当做字符串来读进来先。
      2两数相加,应此用到了第3个数组,应此在进行加之前要把数组清空先。
      3读入的字符串应为不一定长度相同,但是我门加的时候必须对其来加,应此我门要先把字符串中        元素从后面加起。
      4式中-48的意思是把相应的字符串转化成相应的整数。
      5考虑到相加时会产生进位这些,应此用了channg函数来判断是否有进位,有的话,那就进一位
      6然后在用k来把数按原来的顺序排好。

阅读(2236) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册