一个大整数加法的问题。
大的整数加法(大于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编辑过]