请选出以下程序段的输出结果

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:11:54
#include<stdio.h>
main()
{ char s1[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处<CR>代表回车符)
aaaa bbbb<CR>
cccc dddd<CR>

A) aaaa B) aaaa C) aaaa D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc dddd dddd
cccc dddd dddd dddd

请给出解释谢谢

scanf("%s%s",s1,s2); 是把aaaa和bbbb分别读到s1,s2,到这没问题吧.
然后你按了回车,问题来了,回车实际上是输入了两个字符\r和\n.其中\r是用来确认刚才的scanf输入的,而\n仍然保留在了缓冲区内.因此gets(s3)实际上读到的就是\n.
最后gets(s4)是按行读取的,因此读完了cccc dddd.

答案是A

在Visual C++环境下运行结果如图示

程序中scanf("%s%s",s1,s2);可以用

gets(s1);gets(s2);替换。

gets()函数的作用是从键盘输入一个字符串并在屏幕上显示。

puts()函数的作用是显示(打印)字符串

选A。

输入的aaaa+空格完成了s1的数据录入;
bbbb+回车完