全WA,但是自己测试结果都对啊??!!

P1957 口算练习题

吐了 @ 2021-02-27 13:50:49

#include<iostream>
#include<algorithm>
#include<sstream>  
using namespace std;
void f(char x,string s){
    int t=0,j,m=s.length();
    for(j=0;j<m;++j){
        if(s[j]!=' ') ++t;
        else break;
    }

    string s1=s.substr(0,t);   
    int a=atoi(s1.c_str());     
    string s2=s.substr(j+1,m-j-1);  
    int b=atoi(s2.c_str());

    if(x=='a'){
        int c=a+b;
        stringstream cs;     
        cs<<c;              
        string s3=cs.str(); 
        string result=s1+"+"+s2+"="+s3;
        cout<<result<<endl;
        cout<<result.length()<<endl;
    }
    else if(x=='b'){
        int c=a-b;
        stringstream cs; 
        cs<<c;              
        string s3=cs.str();
        string result=s1+"-"+s2+"="+s3;
        cout<<result<<endl;
        cout<<result.length()<<endl;
    }
    else{
        int c=a*b;
        stringstream cs;   
        cs<<c;             
        string s3=cs.str(); 
        string result=s1+"*"+s2+"="+s3;
        cout<<result<<endl;
        cout<<result.length()<<endl;
    }        

} 
int main(){
    int i,n;
    char x;
    cin>>n;
    for(i=0;i<n;++i){

        string s,d;
        cin>>d;
        cin.get();
        getline(cin,s);

        if(d[0]=='a'){
            x='a';
            f(x,s);
        }
        else if(d[0]=='b'){
            x='b';
            f(x,s);
        }
        else if(d[0]=='c'){
            x='c';
            f(x,s);
        }
        else{
            string v=d+" "+s;
            f(x,v);
        }
    }
    return 0;
}

by _caiji_ @ 2021-02-27 13:51:51

建议去洛谷 IDE 测试。


by 吐了 @ 2021-02-27 14:12:54

破案了,洛谷是把回车也算在字符串里面了,所以输出格式每行多一个回车.....奇了怪了这洛谷,devc++上就不算回车


by CGDGAD @ 2021-02-27 15:05:05

@吐了 /yun 为啥把锅甩给洛谷啊

getline 就是读进换行符的


by 吐了 @ 2021-02-27 15:18:33

@NSObject 可是dev中并没有读入换行符啊


by CGDGAD @ 2021-02-27 15:23:27

@吐了 你在本地用文件输入输出试试


by CGDGAD @ 2021-02-27 15:23:55

如果是直接窗口运行的话应该会忽略换行符,这个我不清楚


by 吐了 @ 2021-02-27 15:24:07

@NSObject 如果你指的是前面语句输入整数时的换行符,我用cin.get()丢弃了。 这里导致格式错误的是输入字符串时尾部回车的换行符,当我把m-j-1换成m-j-2时在洛谷IDE中运行结果正常,在dev里反倒少一位。 所以应该是洛谷IDE与dev编译器有一些区别。


by 吐了 @ 2021-02-27 15:25:25

@NSObject emmm,应该是直接窗口运行的话应该会忽略换行符


by CGDGAD @ 2021-02-27 15:27:12

@吐了 我说的是字符串末尾那个

一般来说,如果是 windows 下造的数据,用 gets 和 getline 都不太安全吧 /yiw


by 吐了 @ 2021-02-27 15:29:17

@NSObject 哦哦


| 下一页