社区讨论

我不理解...

P1957口算练习题参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo9b5kzi
此快照首次捕获于
2023/10/28 08:32
2 年前
此快照最后确认于
2023/10/28 08:32
2 年前
查看原帖
疑问:为什么在IDE上测,输出第一行是5?“0 0=0”长度为5,但是这是空串的情况?我用特判卡了一下,但是为什么卡不掉?
CPP
#include<iostream>
#include<string>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int n,a,b,c,k;
char t=' ';
string s;
int main(){
	cin>>n;
	for(int i=1;i<=n+1;i++){
		getline(cin,s);
		if(s.size()==0) continue;
		if(s[0]=='a'||s[0]=='b'||s[0]=='c') t=s[0];
		a=b=0;
		if(s[0]>='0'&&s[0]<='9') k=0;
		else k=2;
		for(int j=k;j<s.size();j++){
			if(s[j]==' '){
				k=j+1;
				break;
			}
			a=a*10+(s[j]-'0');
		}
		for(int j=k;j<s.size();j++){
			if(j=='\n')	break;
			b=b*10+(s[j]-'0');
		}
		int len=0;
		if(a>=0&&a<=9) len+=1;
		if(a>=10&&a<=99) len+=2;
		if(a>=100&&a<=999) len+=3;
		if(a>=1000&&a<=9999) len+=4;
		if(a==10000) len+=5;
		if(b>=0&&b<=9) len+=1;
		if(b>=10&&b<=99) len+=2;
		if(b>=100&&b<=999) len+=3;
		if(b>=1000&&b<=9999) len+=4;
		if(b==10000) len+=5;
		if(t=='a'){
			c=a+b;
		}else if(t=='b'){
			c=a-b;
		}else if(t=='c'){
			c=a*b;
		}
		if(c>=0&&c<=9) len+=1;
		if(c>=10&&c<=99) len+=2;
		if(c>=100&&c<=999) len+=3;
		if(c>=1000&&c<=9999) len+=4;
		if(c==10000) len+=5;
		if(c>=-9&&c<=-1) len+=2;
		if(c>=-99&&c<=-10) len+=3;
		if(c>=-999&&c<=-100) len+=4;
		if(c>=-9999&&c<=-1000) len+=5;
		if(c==-10000) len+=6;
		len+=2;
		if(t=='a') cout<<a<<'+'<<b<<'='<<c<<'\n';
		if(t=='b') cout<<a<<'-'<<b<<'='<<c<<'\n';
		if(t=='c') cout<<a<<'*'<<b<<'='<<c<<'\n';
		cout<<len<<'\n';
	}
	return 0;
}
CPP
if(s.size()==0) continue;
为什么没有奏效?

回复

6 条回复,欢迎继续交流。

正在加载回复...