简单大数加法
可以将加数存放在数组中,按位让数组元素相加,对结果进行进位操作,最后进过转换(消0、逆序)输出结果*
↓↓↓代码↓↓↓
#define _CRT_SECURE_NO_WARNINGS//避免scanf报错
#include<stdio.h>
#include<string.h>
char X[2000], Y[2000];
int a[2000], b[2000], s[2000];
int main()
{
int i, k, n, m;
while (scanf("%s %s", X, Y))
{
n = strlen(X);//求数组长度
m = strlen(Y);
for (i = 0; i < n; i++)
a[i] = X[n - i - 1] - '0';//逆序,并使ascii码值小于10
for (i = 0; i < m; i++)
b[i] = Y[m - i - 1] - '0';//逆序,并使ascii码值小于10
k = (m > n) ? m : n;//比较两加数的长短,并将长度(最长的)赋给k
memset(s, 0, sizeof(s));//将s数组中的所有元素置零
for (i = 0; i <= k; i++)
{
s[i] += a[i] + b[i];//从最低位开始相加
if (s[i] > 9)//进位操作
{
s[i + 1]++;
s[i] %= 10;
}
}
while (s[k] == 0 && k > 0) k--;//将数组高位上的0消去
for (i = k; i >= 0; i--)//逆序输出数组元素
printf("%d", s[i]);
printf("\n\n");
}
return 0;
}
↓↓↓演示↓↓↓