题解 | 复读机

复读机

https://www.nowcoder.com/practice/9d381551b6ab40c4b5c3c8d60fe4066e

#include <stdio.h>
int main() {
    int a;
    long int b;
    float c;
    char d;
    char e[100001];
    scanf("%d\n%ld\n%f",&a,&b,&c);
  //读取前三个数,尝试用一个scanf一次性读取三个数,并夹带\n,发现是可以的,因为scanf的特性:搭配%d,%f时自动跳过空白字符
  
    int ch;
    while((ch=getchar())!='\n'&&(ch=getchar())!=EOF);
  //上方输入时缓冲区残留'\n',清空缓冲区,防止影响getchar读取
    
    d=getchar();//读取字母,此时缓冲区又会残留'\n'
    
    scanf("%s",e);//哈哈,但因为紧跟其后读入的是scanf的%s类型(特性:自动跳过开头空白字符,遇到空白字符结束,将空白字符留在缓冲区),所以不影响读入和输出。但是如果紧跟其后的是getchar或者fgets,那就会影响了,需要先清空缓冲区。
  
    printf("%d\n%ld\n%.1f\n",a,b,c);
    printf("%c\n",d);
    printf("%s",e);
    return 0;
}

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务