在c中添加大量数字的错误结果

时间:2014-05-28 10:28:33

标签: c numbers add digits

我想添加一些我将从键盘输入的巨大数字。但是我想将它们作为字符串输入。我已经尝试了另一种使用ASCII的方式,这是用另一个答案写的,但它似乎不起作用。无论如何,这是我的代码:

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

/* ADDING HUGE NUMBERS */
int addHugeNumbers(char *a1,char *a2,char *res){
    int i,q,e; // k is the add
    int k;
    k=0;
    i=0;
    q=0;
    e=strlen(a1);
    while (i<e-1) //CHECK IF THE FIRST ONE IS ONLY DIGITS
    {
        if (isdigit(a1[i])==0) return 0;
        else i++;
    }
    i=0;
    q=strlen(a2);
    while (i<q-1) //SAME CHECK FOR THE SECOND ONE
    {
        if (isdigit(a2[i])==0) return 0;
        else i++;
    }


    k=atoi(a1)+atoi(a2);
    sprintf(res,"%d",k);    
    puts(res); 
return 1;
}
int main(int argc, char *argv[]) {
    char a1[2000], a2[2000],res[2000];
    fgets(a1,2000,stdin);
    fgets(a2,2000,stdin);
    printf("%d",addHugeNumbers(a1,a2,res));
    return 0;

}

此代码适用于小数字(最多可说5-6位)。但是当谈到更大的数字(15-16)时,它给了我错误的答案。 尝试添加9999999999999999 + 9999999999999999

1 个答案:

答案 0 :(得分:0)

Rightly表示C没有内置支持任意数字。

因此,如果确实需要将大数字输入作为字符串添加,那么编写自己的函数,通过添加单位数,十位数,百位数等来对它们进行求和,并记住如果有的话可以容纳进位。