一个大整数加法的问题。
大的整数加法(大于24位,小于100位)。函数原型为 void H_interger(char *s1,char *s2)
要求输出计算结果:
比如:
111111111111111111111+1234567891234567891234=13456789002345679002345
我编写的时候主要遇到两个困难:
1.字符型转长整形
2.进位的问题(主要是不进位但是结果全为9的问题)
字符型转整形解决了:
程序代码:void addlong(char*str1, char* str2)//下面的代码主要分割字符成,每8位转成为一个整形存在二维数组中
{
int q[2],r[2],i,j,k; //q存储商,r存储余数
int tp1, tp2;
long a[2][13] = {0};//用来存储分割结果
char ts[9],*s1;
i = strlen(str1); j = strlen(str2);
printf("i=%d, j=%d\n", i, j);
q[0] = i / 8; q[1] = j / 8;
r[0] = i % 8; r[1] = j % 8;
for (k = 0; k < 2; k++)
{
if (k == 0) s1 = str1;
else s1 = str2;
for (tp1 = 0; tp1 < r[k]; tp1++)
{
ts[tp1] = *(s1 + tp1);
}
ts[r[k]] = '\0';
a[k][0] = atol(ts);
for (tp1 = 0; tp1 < q[k]; tp1++)
{
for (tp2 = 0; tp2 < 8; tp2++)
ts[tp2] = *(s1 + r[k] + tp1 * 8 + tp2);
ts[8] = '\0';
a[k][tp1+1] = atol(ts);
}
}
for (tp1 = 0; tp1 < 2; tp1++) //输出分割结果
{
for (tp2 = 0; tp2 < 13; tp2++)
{
if (a[tp1][tp2] == 0) break;
printf("%d\n", a[tp1][tp2]);
}
}
}但是最后处理,不同位数的整数的进位的问题,不会做了,求各位网友帮帮忙![此贴子已经被作者于2016-9-20 14:49编辑过]









