这是一个大数加法的程序,你可以仿照它改写成大数减法。
----------
输入至多100行的文本,每行是一个至多100位的十进制无符号大整数,最后的输入行为零。要求计算出这些大整数的和,并以十进制方式显示。
示例输入:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
示例输出:
370370367037037036703703703670
#include
#include
using namespace std;
int main()
{
const int n = 100;// 数字的最大位数
const int b = 10; // 数字的进制
char r[n+1] = {0};// 加数
char s[n+1] = {0};// 求和
while (scanf("%s", r) && strcmp(r, "0")) { // 对每一个加数...
for (int i = strlen(r)-1, j = n-1; i >= 0; i--, j--) { // 中的每一个数字位
r[i] -= '0'; // char -> int
for (int k = j, c = 0; 1; k--) { // update s
const int sum = (!c ? r[i] : 0) + s[k] + c; // local sum
if ((c = sum > b - 1)) s[k] = sum - b; // do update
else { s[k] = sum; break; } // end update
}
}
}
for (int i = 0; i < n; putchar(s[i++] + '0'));
return 0;
}
不论不类的C++
要么用C,单独写几个运算函数,要么用C++,写一个大数的类,你找的这么一个加法程序实在难看,想修改更难。。。