有两个字符数组 a、b,则以下正确的输入语句是 A.scanf(“%s%s”,&a,&b);B.gets(a); gets(b);

为什么B对A错?... 为什么B对A错? 展开
 我来答
幻翼高达Zero
2019-05-23 · TA获得超过1.7万个赞
知道答主
回答量:499
采纳率:0%
帮助的人:8.1万
展开全部

对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

所以“A.scanf("%s%s",&a,&b)”中,变量a、b多携带了“&”操作符,是错误的。而对于gets()函数的使用,其中参数为字符串变量(字符串数组名或字符串指针),所以“B.gets(a); gets(b);”是正确的用法。

扩展资料:

gets()与scanf()在字符串输入的使用差异:

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

也就是说,gets()函数读取到\n(输入的回车)是会停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

参考资料来源:百度百科-scanf (计算机语言函数)

参考资料来源:百度百科-gets

有點壞哦
推荐于2018-02-27 · TA获得超过1371个赞
知道小有建树答主
回答量:680
采纳率:50%
帮助的人:379万
展开全部
A错,是因为数组名就是地址,所以无需多此一举再在地址前加一个&来表示地址
B对,是表示从终端输入一个字符串到数组a中,并得到此字符数组的起始地址;()中的是字符数组名不是&a也不是字符串
如果写成
gets("a");gets("b");就是错误的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折一湖qy
2018-12-22
知道答主
回答量:1
采纳率:0%
帮助的人:792
展开全部

我写的代码:

#include<stdio.h> 

void main()

{

char a[100],b[100];

scanf("%s%s",&a,&b);

printf("%s\n%s\n",a,b);

}

这样写输出没问题,我们学校考试题库也认为scanf("%s%s",&a,&b);这是对的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyqf365
2011-06-06 · TA获得超过1185个赞
知道小有建树答主
回答量:1291
采纳率:100%
帮助的人:787万
展开全部
B正确
A对地址取址所以出错了
只要区分数组名是个类似指针的东西就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kq66olbay
2011-06-07 · TA获得超过427个赞
知道答主
回答量:527
采纳率:100%
帮助的人:349万
展开全部

B) is the answer;
字符数组,那么数组名就表示首地址,所以就是B了,C选项都没有那个写法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式