我不理解...

P1957 口算练习题

caramel_qwq @ 2022-02-14 17:33:39

疑问:为什么在IDE上测,输出第一行是5?“0 0=0”长度为5,但是这是空串的情况?我用特判卡了一下,但是为什么卡不掉?

#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;
}
if(s.size()==0) continue;
为什么没有奏效?

by jijiaze @ 2022-02-14 17:37:32

@幸运小崽n3 我之前调试的时候发现 getline() 是不能读回车的


by caramel_qwq @ 2022-02-14 17:38:20

@jijiaze 也就是说我把回车读进来了?


by jijiaze @ 2022-02-14 17:38:48

@幸运小崽n3 大概是的


by jijiaze @ 2022-02-14 17:39:50

@幸运小崽n3 如果输入


by jijiaze @ 2022-02-14 17:40:18

@幸运小崽n3 不是,字符串中不包含回车


by caramel_qwq @ 2022-02-14 17:43:58

@jijiaze 感谢帮助qwq


|