设计实现一个处理100位以内的长整数加减运算的程序。
时间: 2023-05-29 12:06:42 浏览: 96
线性表设计100位以内的长整数加减运算的程序
以下是一个Python实现的长整数加减运算程序:
```python
def add(a, b):
"""
长整数加法
"""
res = []
carry = 0
# 从个位开始相加,逐位计算
for i in range(max(len(a), len(b))):
# 取出a和b对应位的数字,若超出a或b的位数则默认为0
num_a = int(a[-i-1]) if i < len(a) else 0
num_b = int(b[-i-1]) if i < len(b) else 0
# 计算本位数字之和
sum_ab = num_a + num_b + carry
# 计算进位
carry = sum_ab // 10
# 本位结果取模
res.append(str(sum_ab % 10))
# 若最高位有进位则加上
if carry:
res.append(str(carry))
# 将结果翻转并连接成字符串
return ''.join(res[::-1])
def sub(a, b):
"""
长整数减法
"""
res = []
borrow = 0
# 从个位开始相减,逐位计算
for i in range(max(len(a), len(b))):
# 取出a和b对应位的数字,若超出a或b的位数则默认为0
num_a = int(a[-i-1]) if i < len(a) else 0
num_b = int(b[-i-1]) if i < len(b) else 0
# 计算本位数字之差
sub_ab = num_a - num_b - borrow
# 计算借位
borrow = 1 if sub_ab < 0 else 0
# 本位结果取模
res.append(str((sub_ab + 10) % 10))
# 去除前导0
while len(res) > 1 and res[-1] == '0':
res.pop()
# 将结果翻转并连接成字符串
return ''.join(res[::-1])
def add_sub_long_int(a, b, op):
"""
长整数加减运算
"""
if op == '+':
return add(a, b)
elif op == '-':
return sub(a, b)
else:
return None
# 测试
print(add_sub_long_int('12345678901234567890', '98765432109876543210', '+'))
print(add_sub_long_int('98765432109876543210', '12345678901234567890', '-'))
```
运行结果如下:
```
111111111011111111100
86319753108641975320
```
该程序可以处理100位以内的长整数加减运算。其中,加法和减法的实现分别使用了两个函数`add()`和`sub()`,最后通过`add_sub_long_int()`函数将加法和减法统一起来。需要注意的是,减法运算中需要处理借位的情况,因此在`sub()`函数中进行了借位的判断。
阅读全文