一道C语言题目,在输入时,字符变量的值不用空格间隔,其输出函数可为()

A.scanf("%c%c%c",&a,&b,&c)B.scanf("%c%c%c",&a,&b,&c)C.scanf("%3c",&a,&b,&c)D.循环执行getc... A.scanf("%c %c %c",&a,&b,&c)
B.scanf("%c%c%c",&a,&b,&c)
C.scanf("%3c",&a,&b,&c)
D.循环执行getchar
这道题选哪个答案?为什么?
A和B选项输入123或(1 2 3)无论加不加空格都会输出1,2,3
展开
 我来答
直角世界的博客
2019-09-01 · TA获得超过106个赞
知道小有建树答主
回答量:91
采纳率:89%
帮助的人:36.7万
展开全部

应该是A,我没太理解你的意思...你把原题贴出来吧。我把每个选项解释一下。

A里边加空格的意思是,先读一个字符A,然后跳过0个或者任意个空白字符,直到找到下一个非空白字符,然后读B,然后读C。

B则不会跳过。也就是你输入”123“,AB都能读到1,2,3,而你输入”1 2 3“,A能跳过空格读到1,2,3,而B读的是1,空格,2。

你说的B加不加空格都是1,2,3这个肯定是不对的——

请点击输入图片描述

你可以看看这个:网页链接这里有解释。

C肯定不对,%3c是输入占3字节的宽字符的意思,比如汉字占2字节,这种用%2c,而且只能读进一个char,不能读3个。

引用C官方文档:

man scanf       c      Matches a sequence of width count characters  (default  1);  the              next pointer must be a pointer to char, and there must be enough              room for all the characters (no terminating NUL is added).   The              usual  skip of leading white space is suppressed.  To skip white              space first, use an explicit space in the format.

D我不太知道循环是怎么循环的...如果是循环判断是不是空白字符,是空白就跳过,不是空白就读,这个跟A一样;如果就是getchar(a);getchar(b);getchar(c);这个就是跟B一样了。

追问
那就是原题,一字不漏的....刚刚运行了一下,确实是A,我之前可能输错了
chinaboyzyq
2019-09-01 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3295万
展开全部
因为A的格式符中有空格,所以输入时有没有空格,结果都会123
因为B的格式符中没有空格,所以输入时不能有空格,空格会被当做字符输入,会得到1 2。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式