我想添加一些我将从键盘输入的巨大数字。但是我想将它们作为字符串输入。我已经尝试了另一种使用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
答案 0 :(得分:0)
Rightly表示C没有内置支持任意数字。
因此,如果确实需要将大数字输入作为字符串添加,那么编写自己的函数,通过添加单位数,十位数,百位数等来对它们进行求和,并记住如果有的话可以容纳进位。