一道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 展开
应该是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,我之前可能输错了