求助各位大神,案例结果一样,样例1也一样,但全是WA,到底为什么???
查看原帖
求助各位大神,案例结果一样,样例1也一样,但全是WA,到底为什么???
993485
yw15912527693楼主2023/6/30 16:36
#include<bits/stdc++.h>
#include<cstring>
using namespace std;
int main(){
	int n;
	cin>>n;
	getchar();//因为循环中用getline语句,用getchar消除第一个cin的回车影响; 
	string a[n],b[n],c[n],d[n];//a[n]输入的每一行,b[n]第一个数字,c[n]第二个数字 
	char f[n];//输入的运算符 
	int bb[n]={0},cc[n]={0},dd[n]={0},w[n]={0},wb[n],wc[n]; //bb第一个数字转换成整型,cc第二个数字,dd,运算结果,w最后运算数的长度,wb第一个数的长度,wc第二个数的长度 
	for(int i=0;i<n;i++){

		getline(cin,a[i]);//输入每一行,getline用语有空格的输入 
		if(a[i][0]=='a'||a[i][0]=='b'||a[i][0]=='c'){
			f[i]=a[i][0];
			a[i]=a[i].substr(2);//如果第一个字符是表示运算符的ABC,提取出来 
		}
		else f[i]=f[i-1];//如果没有运算符,和上一行的相同 
		int k=a[i].find(" ");
		b[i]=a[i].substr(0,k);
		c[i]=a[i].substr(k+1);//根据空格拆分第一个数和第二个数 
		for(int j=0;j<b[i].length();j++){
			bb[i]+=(b[i][j]-'0')*pow(10,b[i].length()-1-j);
		}
		for(int j=0;j<c[i].length();j++){
			cc[i]+=(c[i][j]-'0')*pow(10,c[i].length()-1-j);
		}//将第一个数、第二个数转换成整型 
	}
	for(int i=0;i<n;i++){
		if(f[i]=='a'){
			cout<<bb[i]<<"+"<<cc[i]<<"="<<bb[i]+cc[i]<<endl;
			dd[i]=bb[i]+cc[i];
		}
		if(f[i]=='b'){
			cout<<bb[i]<<"-"<<cc[i]<<"="<<bb[i]-cc[i]<<endl;
			dd[i]=bb[i]-cc[i];
		}
		if(f[i]=='c'){
			cout<<bb[i]<<"*"<<cc[i]<<"="<<bb[i]*cc[i]<<endl;
			dd[i]=bb[i]*cc[i];
		}//根据运算符计算并输出 
		if(dd[i]<0){
			w[i]++;
			dd[i]=-dd[i];
		}//计算每个运算符的长度,如有结果有负数,长度加1 
		if(dd[i]==0)w[i]=1;//如果结果为0,结果的长度为1 
		while(dd[i]!=0){
			w[i]++;
			dd[i]/=10;
		}//计算结果的长度 
		wb[i]=b[i].length();
		wc[i]=c[i].length();//得到第一、二个数的长度 
		w[i]=wb[i]+wc[i]+2+w[i];//计算总长度,+2是因为运算符和等号的长度 
		cout<<w[i]<<endl;
	}
	return 0;
}

是哪里不对吗

2023/6/30 16:36
加载中...