C语言学习C语言

杭电oj-1002--A + B Problem II

2019-10-11  本文已影响0人  小小Henry

很多细节,,,,,,,

#include <stdio.h>
#include <string.h>

void Sum(char a[], char b[], int c[], int lena, int lenb);


int main(void)
{
    char a[1000] = { 0 }, b[1000] = { 0 };
    int c[1001] = { 0 };
    int  number, i, j, lena, lenb, max;
    scanf("%d", &number);

    for (i = 0; i < number; i++)
    {
        /************初始化***************/
        char a[1000] = { 0 };
        char b[1000] = { 0 };
        int c[1001] = { 0 };
        /*******************************/

        /***********Input**************/
        scanf("%s", a);
        scanf("%s", b);
        lena = strlen(a);
        lenb = strlen(b);
        /******************************/

        /*************求和***********/
        Sum(a, b, c, lena, lenb);
        max = lena > lenb ? lena : lenb;
        /**************************/

        /*************Output*********/
        printf("Case %d:\n", i + 1);
        printf("%s + %s = ", a, b);
        if (c[0])
            j = 0;
        else
            j = 1;
        for (j; j <= max; j++)
            printf("%d", c[j]);

        if (i != number - 1)
            printf("\n\n");
        else
            printf("\n");
        /****************************/
    }
    return 0;
}



/*将a和b数组中的大数相加,将结果存储到c中去,返回相加后的长度lenc*/
void Sum(char a[], char b[], int c[], int lena, int lenb)
{
    int temp;
    int  max;
    max = lena > lenb ? lena : lenb;
    while (lena > 0 && lenb > 0)
    {
        temp = a[--lena] + b[--lenb] +c[max] - 48 -48;
        //如果产生进位
        if (temp/10)
        {
            c[max]   = temp%10;
            c[max-1] = temp/10;
        }
        //不产生进位
        else
        {
            c[max] = temp;
        }
        max--;
    }
    /***********a比b短*******************/
    while(lenb>0)
    {
        c[max] += b[--lenb]-48;
        if (c[max]/10)
        {
            c[max-1] = c[max]/10;
            c[max]  %= 10;
        }
        max--;
    }
    /*********************b比a短********/
    while(lena>0)
    {
        c[max] += a[--lena] -48;
        if (c[max]/10)
        {
            c[max-1] = c[max]/10;
            c[max]  %= 10;
        }
        max--;
        
    }
}
上一篇 下一篇

猜你喜欢

热点阅读