这题除了GETLINE还有什么方法判断它输入完成了!

回复帖子

@夕颜灬月 2019-06-16 09:42 回复
#include <iostream>
#include <cstdio>
int sum;
using namespace std;
int main(){
    char a;
    while(scanf("%c",&a)){
        if(a=='a'||a=='d'||a=='g'||a=='j'||a=='m'||a=='p'||a=='t'||a=='w'||a==' ')
            sum++;
        if(a=='b'||a=='e'||a=='h'||a=='k'||a=='n'||a=='q'||a=='u'||a=='x')
            sum+=2;
        if(a=='c'||a=='f'||a=='i'||a=='l'||a=='o'||a=='r'||a=='v'||a=='y')
            sum+=3;
        if(a=='s'||a=='z')
            sum+=4;
        if(a=='\n')
            printf("%d\n",sum),sum=0;
    }
    return 0;
}

这代码,提交全部$TLE$

@夕颜灬月 首先scanf返回的是个int,当尝试读入失败时返回 EOF,EOF的值是实现定义的(大部分是-1),所以 baoyu 的做法只是巧妙地利用了位运算 将 -1 转为 0(进而为false)

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。