编写程序,基于字符串实现对超长整数的加法运算和减法运算,输入两个超长整数和运算符(+或-),输出运算结果。
时间: 2024-02-28 19:57:30 浏览: 72
超大整数的乘法,用字符串实现
好的,我可以帮您解决这个问题。
以下是一个基于字符串实现对超长整数的加法运算和减法运算的 Python3 代码示例:
```python
def add(a, b):
# 将字符串翻转,方便从低位到高位相加
a, b = a[::-1], b[::-1]
# 用 0 补齐两个字符串长度,防止出现下标越界
a += '0' * (len(b) - len(a))
b += '0' * (len(a) - len(b))
ans = ''
carry = 0
for i in range(len(a)):
s = int(a[i]) + int(b[i]) + carry
ans += str(s % 10)
carry = s // 10
# 如果最高位有进位,需要再加一位
if carry:
ans += '1'
# 将字符串翻转,还原回原来的顺序
return ans[::-1]
def sub(a, b):
# 将字符串翻转,方便从低位到高位相减
a, b = a[::-1], b[::-1]
# 用 0 补齐两个字符串长度,防止出现下标越界
a += '0' * (len(b) - len(a))
b += '0' * (len(a) - len(b))
ans = ''
borrow = 0
for i in range(len(a)):
s = int(a[i]) - int(b[i]) - borrow
if s < 0:
s += 10
borrow = 1
else:
borrow = 0
ans += str(s)
# 去掉前导零
while len(ans) > 1 and ans[-1] == '0':
ans = ans[:-1]
# 将字符串翻转,还原回原来的顺序
return ans[::-1]
def calc():
a = input('请输入第一个数:')
op = input('请输入运算符(+ 或 -):')
b = input('请输入第二个数:')
if op == '+':
ans = add(a, b)
else:
ans = sub(a, b)
print('运算结果为:', ans)
calc()
```
这个程序首先定义了两个函数 `add` 和 `sub`,分别用于实现超长整数的加法和减法。这两个函数都是基于字符串实现的,具体实现细节见注释。
然后定义了一个 `calc` 函数,用于读入两个超长整数和一个运算符,根据运算符调用 `add` 或 `sub` 函数进行运算,最后输出结果。
您可以将以上代码保存为一个 .py 文件,然后在命令行中运行该文件,按照提示输入两个超长整数和一个运算符,即可得到运算结果。
阅读全文