60分求调
查看原帖
60分求调
1011579
jess1ca1o0g3楼主2023/8/10 11:05
#include<iostream>
#include<cstring>
using namespace std;

int a[10100]={0},b[10100]={0},c[10100]={0},lena,lenb,lenc;
char ch1[10100],ch2[10100],tmp[10100];
bool flag=0;

void sub(int a[],int b[]){
	lenc=1;
	while(lenc<=lena||lenc<=lenb){
		if(a[lenc]<b[lenc]){
			a[lenc]+=10;
			a[lenc+1]--;
		}
		c[lenc]=a[lenc]-b[lenc];
		lenc++;
	}
	while(c[lenc]==0&&lenc>1)
		lenc--;
	return;
}

int main(){
	cin>>ch1>>ch2;
	lena=strlen(ch1);
	lenb=strlen(ch2);
	if(lena<lenb||(lena==lenb&&strcmp(ch1,ch2)<0)){
		strcpy(tmp,ch1);
		strcpy(ch1,ch2);
		strcpy(ch2,tmp);
		cout<<"-";
	}
	for(int i=0;i<=lena-1;i++)
		a[lena-i]=ch1[i]-'0';
	for(int i=0;i<=lenb-1;i++)
		b[lenb-i]=ch2[i]-'0';
	sub(a,b);
	for(int i=lenc;i>=1;i--)
		cout<<c[i];
	cout<<endl;
	return 0;
}

问题是位数不相同的数得负数会输出奇怪的东西,

比如输入

8
10

输出-249???

不知道怎么改。

2023/8/10 11:05
加载中...