c语言 选择题 求高手帮忙!

#include<stdio.h>
main()
{ char a1[5],a2[5],a3[5],a4[5];
scanf("%s%s",a1,a2);
gets(a3);gets(a4);
puts(a1);puts(a2)
puts(a3);puts(a4);
}

A)aa B) aa C)aa D)aa bb
bb bb bb cc
cc cc dd dd
cc dd dd ee

请问 应该选什么 能详细讲解下解体思路吗??? puts执行的时候是否在输出的字符串后加个空格?

答案是A
我上机试过
scanf("%s%s",a1,a2);
可以正常读取aa bb a1=aa b1=bb
gets(a3);gets(a4);
gets(a3)读取了一个空字符('/0')
gets(a4)读取了 cc dd
所以输出是A ,这个你自己上机调试跟踪就可以了。
这道题说明scanf和gets是有区别的,但我也说不清,上网查吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-30
没有正确的答案,可能你输入有误
第2个回答  2010-11-30
scanf ,输入数据一般用空格键、回车或者TAB隔开。
gets 必须用回车作为输入结束。
所以。。。。
这样改后,你就清楚的看到:
#include<stdio.h>
void main()
{ char a1[5],a2[5],a3[5],a4[5];
printf("输入为:");
scanf("%s%s",a1,a2);
gets(a3);gets(a4);
printf("输出为:");
puts(a1);puts(a2);
puts(a3);puts(a4);
}
当输入:aa(按空格) bb(按空格) cc(按回车)
dd(按回车)
会显示:aa
bb
cc
dd
相似回答