您的位置:首页 > 其它

大数相加

2013-04-08 23:55 162 查看
输入:

    第1行.:测试数据的组数

    第2行:两个整数

#include <stdio.h>

#include <string.h>

int reserve(char *num, int len)  //颠倒数组中的元素

{

    int i = 0, low = 0, high = len-1;

    char c;

    while(low < high)

    {

        c = num[low];

        num[low] = num[high];

        num[high] = c;

        low ++;

        high --;

    }

    return 0;

}

int main()

{

    int n, len_1, len_2, i = 0, j = 0;

    char num_1[1000], num_2[1000], result[1000];

    scanf("%d", &n);

    for(j = 1; j <= n; j++)

    {

        for(i = 0; i < 1000; i ++)

        {

            result[i] = '0';

        }

        scanf("%s%s", num_1, num_2);

        len_1 = strlen(num_1);

        len_2 = strlen(num_2);

        printf("Case %d:\n", j);

        printf("%s + %s = ", num_1, num_2);

        reserve(num_1, len_1);

        reserve(num_2, len_2);

        if(len_1 < len_2)   //数组num_1比数组num_2短

        {

            for(i = len_1; i < len_2; i++)    //使两个数组等长,短的数组后面添0

                num_1[i] = '0';

            for(i = 0; i < len_2; i ++)

            {

                result[i] += (num_1[i] + num_2[i] - 96);

                if(result[i] > 57)

                {

                    result[i] = ((result[i] - 48) % 10) + 48;

                    result[i+1] ++;

                }

            }

            if(result[len_2] != '0')     //如果数组的最高位发生进位

                printf("%c", result[len_2]);

             for(i = len_2 - 1; i >= 0; i --)

                printf("%c", result[i]);

        }

        else

        {

            for(i = len_2; i < len_1; i++)

                num_2[i] = '0';

            for(i = 0; i < len_1; i ++)

            {

                result[i] += (num_1[i] + num_2[i] - 96);

                if(result[i] > 57)

                {

                    result[i] = ((result[i] - 48) % 10) + 48;

                    result[i+1] ++;

                }

            }

            if(result[len_1] != '0')  

                printf("%c", result[len_1]);

             for(i = len_1 - 1; i >= 0; i --)

                printf("%c", result[i]);

        }

        printf("\n");

        if(j != n)

            printf("\n");

    }

    return 0;
}

如果大家有更好的方法请告诉我,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: