
请教C语言高手一个问题~~
当运行以下程序时,从键盘输入:aabb<回车>ccdd<回车>则下面程序运行结果是:#include<stdio.h>main(){chara1[5],a2[5],a3[...
当运行以下程序时,从键盘输入:
aa bb<回车>
cc dd<回车> 则下面程序运行结果是:
#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);
}
答案是 aa
bb
cc dd 为什么? 展开
aa bb<回车>
cc dd<回车> 则下面程序运行结果是:
#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);
}
答案是 aa
bb
cc dd 为什么? 展开
5个回答
展开全部
scanf 函数,要加入地址符号&,scanf 在读取字符串的时候;
会把空格作为结束符,所以就出现了下面的情况:
aa
bb
而scanf 函数结束的时候,会向下传递一个回车符,这个回车符,就被 gets(a3); 接收到了,
所以第三行是空行,没有内容;
第四行显示的 cc dd 其实是 gets(a4) 内的值。
更多追问追答
追问
那gets的用法您能给我解释下吗
和scanf区别
展开全部
scanf函数遇到空格和回车就结束!所以a1接收的是aa,a2接收的是bb;而gets以回车为结束符,可以接收空格键;所以第一行的回车被a3作为结束符,a4接收的是cc dd ;a3其实是空的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf遇到空格、换行、等字符时,认为输入结束。
gets只有遇到换行时才认为输入结束。
gets只有遇到换行时才认为输入结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
赋值后a1 = "aa", a2 = "bb", a3 = "cc dd", a4 = "\0"(就是那个回车)
最后光标停在第5行
最后光标停在第5行
追问
为什么aa bb分开了
追答
你给的程序不对……在我的机器上运行直接崩溃了……最好不要把scanf和gets混着用,尤其是读入字符串的时候;这样很容易因为空格和回车键被直接读入变量而产生错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
aaaaaaaa啊啊啊啊啊啊啊啊啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询