Home | Problems | Discuss | Login

  

改了n次了,还是WA

1002: A + B Problem (Big integer version)

395177422 | 2018-12-11 09:06:17 | delete | edit
#include <stdio.h>
#include <string.h>
#include <string.h>
#define M 1000 //定义了数量M是100作为数组初始化的数量

int main()
{
    int i, j, len_s1, len_s2;    // len_s1是字符数组s1的长度, len_s2是字符数组s2的长度,
    char s1[M], s2[M];
    int num1[M] = {0};           // 数字数组num1
    int num2[M] = {0};           // 数字数组num2
    while(scanf("%s %s", s1, s2) == 2){
        len_s1 = strlen(s1);         //	求第一个加数的位数
        len_s2 = strlen(s2);	     // 求第二个加数的位数

        for(i=len_s1-1, j=0; i>=0; i--)   //将字符数组转化为数字数组,并倒数存放,作为第一个加数
        {
            num1[j] = s1[i] - '0';
            j++;
        }
        for(i=len_s2-1, j=0; i>=0; i--)   //将字符数组转化为数字数组,并倒数存放,作为第二个加数
        {
            num2[j] = s2[i] - '0';
            j++;
        }

        for(i=0; i<=M; i++)               //实现大数的加法
        {
            num1[i] = num1[i]+num2[i];
            if(num1[i]>9)
            {
                num1[i] = num1[i]-10;
                num1[i+1]++;
            }
        }

        for(i=M-1; i>=0&&num1[i]==0; i--); //求得最终结果的位数

        if(i>=0)
        {
            for(; i>=0; i--)                    //最终答案的输出
            {
                printf("%d", num1[i]);
            }

        }
        else
            printf("0");
        printf("\n");
        memset(num1,0,M);
        memset(num2,0,M);
    }


    return 0;
}
 

Please login to reply.