c语言(注意:是用C语言的语法编)利用数组实现大整数的加法,如果输入的数a、b不是整数则显示输入错误。

2025-02-24 20:50:44
推荐回答(1个)
回答1:

#include 
#include 

char number1[9999];    // 第一个输入数,最大9999位
char number2[9999];   // 第二个输入数,最大9999位
char sum[10000];    // 结果

int main()
{
int len1, len2;
int i, j;

printf("\n输入第一个数:");
scanf("%s", number1);
printf("\n输入第二个数:");
scanf("%s", number2);

len1 = strlen(number1);
len2 = strlen(number2);
if (len1 < 1 || len2 < 1)
{
printf("\n\n输入错误!");    // 至少一个数字
return -1;
}

// 两个数位数不一样时作对齐处理,随便写的,没考虑效率问题
if (len1 > len2)
{
j = len1;
strcpy(sum, number2);
memset(number2, '0', 9999);
strcpy(number2 + len1 - len2, sum);
}
else
{
j = len2;
strcpy(sum, number1);
memset(number1, '0', 9999);
strcpy(number1 + len2 - len1, sum);
}

for (i = 0; i < 10000; i++) sum[i] = 0;    // 结果区清零

i = j;
while (--i >= 0)
{
if (number1[i] < '0' || number1[i] > '9')
{
printf("\n\n第一个数输入错误!");
return -1;
}
sum[i + 1] += number1[i] - '0';

if (number2[i] < '0' || number2[i] > '9')
{
printf("\n\n第二个数输入错误!");
return -1;
}
sum[i + 1] += number2[i] - '0';
}

for (i = j; i > 0; i--)
{
if (sum[i] >= 10)
{
sum[i] %= 10;
sum[i - 1]++;
}
}

printf("\n\n相加结果:");
if (sum[0]) printf("%d", sum[0]);
for (i = 1; i <= j; i++) printf("%d", sum[i]);
return 0;
}