while getchar哪里错了

P1042 [NOIP2003 普及组] 乒乓球

anthonyzhai @ 2024-06-02 22:59:34

while(true){
    c = getchar();
    if(c=='E')
        break;
    if(c=='\n')
        continue;
    scores[n] = c;
    n++;
}

后面的判断过程代码不变,前面将n行字符串整理成1行的代码哪里有问题,为什么就是不对。

  • 在本地测试,输入样例2的数据,输出结果和样例2的正确答案一摸一样;
  • 但是,提交测评后,就是样例2出现提示”Line 2 Column 4, Got 3, Excepted 2“,但是本地的输出第二行就是“11:2“呀,很郁闷。

将接受输入的方式改为以下方式就可以了!

while(true){
    cin>>scores[n];
    if(scores[n]=='E')
            break;
    n++;
}

by xiyihan @ 2024-06-02 23:24:55

可能是因为linux环境下换行符是\r\n


by FFTotoro @ 2024-06-03 08:23:28

@xiyihan windows 下才是 \r\n。能不能搞清楚了再说。

这题数据可能是在 windows 下造的。所以这是正常现象。


by xiyihan @ 2024-06-03 08:40:50

@FFTotoro 抱歉,当时确实没搞清楚不同平台换行符的区别...不过这里的问题应该没错


by anthonyzhai @ 2024-06-03 09:37:37

@FFTotoro 可以了,谢谢! 加了个 || c=='\r'


|