C语言数组题,求解。

#include<stdio.h>intmain(){chars1[10].s2[10],s3[10],s4[10];scanf("%s%s",s1,s2);gets(s... #include <stdio.h>
int 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>
则输出结果是?
答案是:
aaaa
bbbb

cccc dddd
展开
 我来答
gaorongxing
2013-01-15 · TA获得超过308个赞
知道小有建树答主
回答量:285
采纳率:100%
帮助的人:144万
展开全部

scanf取字符串时,空格自动结束一个字符串,且不会接收回车,所以s1,s2分别是aaaa和bbbb

当你敲第一个回车时,这个回车被gets接收,所以s3是空的

gets取字符串时,不区别空格,所以s4是cccc dddd

 

附调试图

artintin
2013-01-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2870万
展开全部
scanf("%s%s",s1,s2);应该也有问题,

应改为scanf("%s",s1);

scanf("%s",s2);

输入必须见到回车才能识别输入结束。
scanf("%s%s",s1,s2);可能输入的东西均在s1中,s2中可能没数据

gets(s3)和gets(s4)也是一样,可能输入的东西均在s3中,s4中可能仅是个回车。
你可以单步执行跟踪看一下内存中s1,s2,s3,s4在每句话执行后会变成什么

输入过程应该是
aaaa<CR>
bbbb<CR>
cccc<CR>

dddd<CR>
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旋风鲨鱼
2013-01-15
知道答主
回答量:82
采纳率:0%
帮助的人:24.1万
展开全部
抱歉 看错了我重新回答一下
你输入的aaaa赋给了s1
输入的bbbb<CR>赋给了s2
cccc dddd<CR>赋给了s3
因为在gets语句中以<CR>为结束标识
所以s4什么都没有接收到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dc0412a
2013-01-16 · 超过11用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:28.7万
展开全部
scanf 不接收空格或者回车,遇到空格或者回车会自动结束输入!
gets遇到回车结束输入并且会接受回车!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帮个忙好不
2013-01-15 · TA获得超过451个赞
知道小有建树答主
回答量:672
采纳率:0%
帮助的人:384万
展开全部
你想问什么啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式