大佬求调
#include<bits/stdc++.h>
using namespace std;
string a1, b1;
int a[10090], b[10090], c[10090], lena, lenb, lenc;
bool fuhao;
void cinit() {
getline(cin, a1);
getline(cin, b1);
}
void zhuanhuan() {
if (a1.length() < b1.length() || (a1.length() == b1.length() && a1 < b1)) {
swap(a1, b1);
fuhao = 1;
}
if (a1 == b1) {
fuhao = 0;
}
lena = a1.length();//计算位数
lenb = b1.length();//计算位数
lenc = lena + lenb;//计算位数
for (int i = 0; i <= lena; i++) {
a[i] = a1[lena - i] - '0'; //char转换为int:减去偏移量
}
for (int i = 1; i <= lenb; i++) {
b[i] = b1[lenb - i] - '0'; //char转换为int:减去偏移量
}
}
void jianfa() {
for (int i = 1; i <= max(lena, lenb) ; i++) {
c[i] = a[i] - b[i]; //相减
}
}
void tuiwei() {
for (int i = 1; i <= lenc; i++) {
if (c[i] < 0 ) { //比0小
c[i + 1] -= 1; //向前退位
c[i] += 10; //更新当前位
}
}
}
void quling() {
while (c[lenc] == 0 && lenc > 1) {
lenc--;//去除前导0
}
}
void coutit() {
if (fuhao == 1 && a1 != b1) {
cout << '-';
}
for (int i = lenc; i >= 1; i--) {
cout << c[i]; //倒序输出!
}
}
int main() {
cinit();//输入
zhuanhuan();//转换
jianfa();//相减
tuiwei();//退位
quling();//去除前导0
coutit();//输出
return 0;
}
(忽略部分注释)