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

很多細(xì)節(jié),,,,,,,

#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數(shù)組中的大數(shù)相加,將結(jié)果存儲(chǔ)到c中去,返回相加后的長(zhǎng)度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;
        //如果產(chǎn)生進(jìn)位
        if (temp/10)
        {
            c[max]   = temp%10;
            c[max-1] = temp/10;
        }
        //不產(chǎn)生進(jìn)位
        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--;
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容