题目
【单选题】对于下述语句,若将 10 赋给变量 k1 和 k3,将 20 赋给变量 k2 和 k4,则应按方式() 输入数据。 int k1,k2,k3,k4; scanf(" %d%d",k1,k2); scanf(" %d,%d",k3,k4);A. 1020 1020B. 10 20 10 20C. 10,20 10,20D. 10 20 10,20
【单选题】对于下述语句,若将 10 赋给变量 k1 和 k3,将 20 赋给变量 k2 和 k4,则应按方式() 输入数据。 int k1,k2,k3,k4; scanf(" %d%d",k1,k2); scanf(" %d,%d",k3,k4);
A. 1020 1020
B. 10 20 10 20
C. 10,20 10,20
D. 10 20 10,20
题目解答
答案
D. 10 20 10,20
解析
本题考查C语言中scanf函数的格式字符串与输入数据的匹配规则。关键点在于:
- 格式字符串中的空格和逗号的作用:空格表示忽略任意空白字符(如空格、换行),而逗号则必须严格匹配输入中的逗号。
- 输入数据的顺序和分隔符:两个
scanf语句依次读取输入流中的数据,需确保每组数据的格式与对应的格式字符串完全匹配。
选项分析
选项D:10 20 10,20
- 第一个
scanf:格式字符串为" %d%d",输入前两个数10和20,分别赋给k1和k2。 - 第二个
scanf:格式字符串为" %d,%d",剩余输入10,20中,10和20用逗号分隔,符合格式要求,赋给k3和k4。
其他选项错误原因
- 选项A:
1020 1020导致k1和k2被赋值为1020,不符合要求。 - 选项B:第二个
scanf需要逗号分隔,但输入10 20用空格分隔,无法匹配。 - 选项C:第一个
scanf读取10,20时,逗号导致第二个%d无法正确读取。