一个C语言问题

有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]);B)scanf(“%s”,s+1);C)gets(s);D)sc... 有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是
A)gets(&s[0]); B)scanf(“%s”,s+1); C)gets(s); D)scanf(“%s”,s[1]);

分析一下
展开
 我来答
豆娃巷0
2011-02-17 · TA获得超过246个赞
知道小有建树答主
回答量:92
采纳率:50%
帮助的人:64.9万
展开全部
错误是 “D ”了
因为数组名s,代表字符串数组的首地址,s指向的地址就是s[0]的地址。gets(s)正确则gets(&s[0])也是正确的,所以 A, C 正确。
而scanf("%s",s+1);实际上只是不从s[0]开始,而是从s[1]开始赋值而已,既然只输给它5个字符,所以从s[1]开始赋值也不会过界,则B是正确的

因为D中s[1]是个变量不是地址,这是明显的错误,scanf()的第二个参数必须是地址。不是常常都能看到scanf里面有取地址符(&)的字样吗?!就是为了给以个地址。而为什么字符串s不要取地址符的原因也一样,因为s本身就是个指针,是指向数组字符串的首地址。故D是错的。

因而选D.
it码神
2011-02-17
知道答主
回答量:10
采纳率:0%
帮助的人:5.7万
展开全部
D
首先明白sanf()函数的参数格式,第二个参数必须是一个指针,而D项是一个变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-02-17
展开全部
D)scanf("%s",s[1]);
不管是gets,还是scanf语句,参数都是地址值,而上面这个s[1]不是地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jseven_jy
2011-02-17 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1084万
展开全部
A和C差不多。。。。
输入的5个字符分别保存在s[0],s[1],s[2],s[3],s[4]中

B选项也是正确的。。。。s表示首地址,s+1表示下一个位置,也就是说输入的5个字符分别保存在s[1],s[2],s[3],s[4],s[5]中

D选项是错误的。。。s[1]只表示一个char。。。而%s表示的字符串。。
如果写成scanf("%c",s[1]);是可以的。。。

希望对你有帮助。。。仍有问题可以HI我。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式