题解 | 复读机
复读机
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;
}
查看10道真题和解析