C语言考试一题望高手赐教

来源:百度知道 编辑:UC知道 时间:2024/05/10 05:03:22
已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。
A) scanf("%2d%2d%2d",&i,&j,&k);
B) scanf(""%d %d %d",&i,&j,&k);
C) scanf("%d,%d,%d",&i,&j,&k);
D) scanf("i=%d,j=%d,k=%d",&i,&j,&k);
答案给的是C,但是我做的时候第一个排除了C,因为书上学的scanf中的%d之间是没有“,”的,这个题目是C语言考试的一题,希望哪位高手把每个选项具体分析下。

这道题的确应该是C。
首先,这四个选项在格式的规定上都应该是正确的。
可是,题目中要求的是输入1,2,3回车,请注意,输入中有两个逗号。
如果在“格式控制”字符串中除了格式说明以外还有其他的字符,则在输入数据时在对应的位置应输入与这些字符相同的字符。
反向思考,在输入时,除了输入对应的数值外,题目还输入了逗号,所以,可以肯定,在程序中,scanf函数的格式说明参数一定含有逗号字符。四个选项中,只有C选项是符合的。

不知道,我这样的解释你清楚吗,如果不清楚,你可以内线再联系。

A) scanf("%2d%2d%2d",&i,&j,&k); 这样输入 1 2 3
B) scanf(""%d %d %d",&i,&j,&k); 错误 在前面多引号了
C) scanf("%d,%d,%d",&i,&j,&k); 是正确的
D) scanf("i=%d,j=%d,k=%d",&i,&j,&k); 这样输入 i=1,j=2,k=3

答案是c没错。scanf的“”内表示的是输入形式,所以只要在输入时按引号内的格式添加逗号即可达到目的。

就是C,可以的。