void INT类大整数大减法(int* 数, int* 加, int 长, int 量, bool& 符 = 1)
{
int x = 1;
while (--长 >= 0 || --量 >= 0)
{
if (数[长] >= 加[量])
数[长] -= 加[量];
else
{
if(数[长] > 0){数[长] += 1E+9; 数[长] -= 加[量];}
else {数[长] += 加[量]; 符 = 0;}
while (数[长 - x] == 0)数[长 - x] = 1E+9 - 1, ++x;//减法必须连续借位
if(长 - x >= 0)数[长 - x] -= 1;
else std::cout << "运算超标溢出!";
x = 1;
}
}
}
//数组每元素整理9位数值,数值第一个元素必须是0用于进位。
int a[111]{1, 0, 0}, aa[111]{1}, x = 0, c = 3, l = 1; bool 符 = 1;
INT类大整数大减法(a, aa, c, l, 符);
if(符==0)std::cout << "-";
while (x < (c > l ? c : l))
if (x > 0)std::cout << std::setw(9) << std::setfill('0') << (c > l ? a[x] : aa[x]), ++x;
else if ((c > l ? a[x] : aa[x]) > 0)std::cout << (c > l ? a[x] : aa[x]), ++x; else ++x;
std::cout << "\n";
【INT类大整数大减法草稿】2022-7-9
最新推荐文章于 2025-07-31 22:28:05 发布