原题: 1743.5.2减法神童2023zjhs020 于2024-12-15
本题注意事项:
1.先判断是否为负数,如果是则输出“-”;
用字符串解决该题;
2.做减法时,判断是否不够减,是则借位;
3.判断是否有前导零,有则删除
(记得给五星好评)
#include<bits/stdc++.h>//头文件
using namespace std;
const int maxn=270;//定义
char sa[maxn],sb[maxn];
char tmp[maxn];
long a[maxn],b[maxn],c[maxn];
int main()
{
scanf("%s",sa);//输入
scanf("%s",sb);
memset(c,0,sizeof(c)); //初始化
long la=strlen(sa);
long lb=strlen(sb);
if(la<lb||((la==lb)&&strcmp(sa,sb)<0))//判断是否为负数
{
strcpy(tmp,sa);//交换
strcpy(sa,sb);
strcpy(sb,tmp);
swap(la,lb);
printf("%c",'-');//输出“-”;
}
long lc=la>lb ? la : lb;//判断那个是被减数的长度
for(int i=0;i<la;i++)//循环
{
a[la-i]=sa[i]-'0';//转换为数组
}
for(int i=0;i<lb;i++)//循环
{
b[lb-i]=sb[i]-'0'; //转换为数组
}
for(int i=1;i<=lc;i++)//进行运算
{
if(a[i]<b[i])//判断是否不够减
{
a[i]+=10;//借位
a[i+1]--;
}
c[i]=a[i]-b[i];
}
while(c[lc]==0)//判断是否有前导零
{
lc--;
}
for(int i=lc;i>=1;i--)//倒序输出
{
cout<<c[i];
}
return 0;//程序结束
}