程序逻辑
- 定义用于存储减数、被减数以及差的整型数组
- 接收字符串输入
- 逆序存储字符串中的每个整型数字到整型数组中
- 从最低位对应相减,不够减的话考虑借位
- 倒序输出数组为最终结果
#include <bits/stdc++.h>
using namespace std;
string a, b;
int a1[200] = {0}, b1[200] = {0}, c1[200] = {0}, n, m;
int main()
{
int x = 0, y = 1, t = 0;
cin >> a;
cin >> b;
n = a.size();
m = b.size();
// cout<<n<<" "<<m<<endl;
/*
将接收的字符串以倒序的形式存入a和b两个整型数组
值通过ASCII码相差的方式得到整型的值
如s = "5183",则a[1]~a[4]里面对应的值分别为3 8 1 5
*/
for (int i = 0; i < n; i++)
a1[n - i] = a[i] - '0';
for (int i = 0; i < m; i++)
b1[m - i] = b[i] - '0';
// for(int i=0;i<=10;i++) cout<<a[i]<<" "<<b[i]<<endl;
/*
y为做每位减法时对应的指针位置,第一次为1,对应a[1]-b[1]
每次做一位减法的时候判断是否需要借位
*/
while (y <= n)
{
if(a1[y]<b1[y]){
a1[y]+=10;
a1[y+1]-=1;
}
c1[y] = a1[y] - b1[y];
y++;
}
y--;
/*
从左侧第一位不是0的数字开始输出结果
*/
int flag = 0;
for(int i = y;i>=1;i--){
if(c1[i]!=0){
flag = 1;
}
if(flag){
cout<<c1[i];
}
}
return 0;
}