- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #define maxn 107
- using namespace std;
- char a[maxn],b[maxn];//接受输入的字符串
- int ta[maxn],tb[maxn];//倒序记录输入的字符串
- int main()
- {
- int i,t;
- int len1,len2;
- scanf("%d",&t);
- while (t--)
- {
- //注意要请0
- memset(ta,0,sizeof(ta));
- memset(tb,0,sizeof(tb));
- scanf("%s%s",a,b);
- len1 = strlen(a);
- len2 = strlen(b);
- int len = max(len1,len2);
- //两个数组统一宽度,倒序记录在ta,tb中,多出的0补上
- for (i = 0; i < len; ++i)
- {
- if (len1 - 1 >= 0)
- {
- ta[i] = a[len1 - 1] - '0';
- len1--;
- }
- else ta[i] = 0;
- if (len2 - 1 >= 0)
- {
- tb[i] = b[len2 - 1] - '0';
- len2--;
- }
- else tb[i] = 0;
- }
- //模拟加法的过程
- for (i = 0; i < len; ++i)
- {
- ta[i] = ta[i] - tb[i];
- if (ta[i] < 0)
- {
- ta[i + 1] -= 1;
- ta[i] += 10;
- }
- }
- bool flag = false;
- //false表示前边还没有出现1-9的数,true表示前边出现了1-9的数字
- //可以处理多余的前导0
- for (i = len; i >= 0; --i)
- {
- if (flag || ta[i])
- {
- flag = true;
- printf("%d",ta[i]);
- }
- }
- if (!flag) printf("0");
- printf("\n");
- }
- return 0;
- }
大数减法
最新推荐文章于 2023-11-28 15:30:51 发布