-
问题描述:将两个大于long型的整数相加,输出结果
-
主要代码
int main(void)
{
char s1[40], s2[40];
int num1[40] = { 0 }, num2[40] = { 0 };
gets(s1);
gets(s2);
int L1 = strlen(s1), L2 = strlen(s2);
int MAX = L1 > L2 ? L1 : L2;
int i, j;
for (i = L1-1,j=0; i>=0; i--,j++)//将字符串中的数字转为int型,逆序存放在整型数组中便于运算
{
num1[j] = s1[i] - '0';
}
for (i = L2 - 1,j=0; i>=0; i--,j++)
{
num2[j] = s2[i] - '0';
}
for (i = 0; i<MAX; i++)
{
num1[i] += num2[i];
if (num1[i] >= 10)
{
num1[i] = num1[i] - 10;//*考虑到两位数字的大小均在10以内,不必有更为复杂的判断*
num1[i + 1]++;
}
}
for (i = MAX; num1[i] == 0; i--)//判断最高位上不零的位置 开始遍历
{
;
}
for (i; i >= 0; i--)
printf("%d", num1[i]);
printf("\n");
return 0;
}
- 精要:
-
在计算前将字符数字转为整型数字十分必要,可以减少一定量的错误出现
-
将数字按位逆置在进行运算时会方便许多