题目
#include<stdio.h> void main() ( int i,j; scanf("%3d%2d",&i,&j); printf("i=%d,j=%d",i,j); ) 如果从键盘上输入1234567<回车>,则程序的运行结果是( ).A.i=123,j=4567B.i=1234,j=567C.i=1,j=2D.i=123,j=45
#include<stdio.h>
void main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是( ).
A.i=123,j=4567
B.i=1234,j=567
C.i=1,j=2
D.i=123,j=45
题目解答
答案
D
解析
本题考查scanf函数的格式说明符用法,特别是宽度说明符的作用。关键在于理解输入数据如何被格式说明符截断,以及多个变量连续输入时的处理逻辑。
核心思路:
- 宽度说明符(如
%3d中的3)表示最多读取的字符数,超出部分会被截断,剩余数据可能被后续说明符处理。 - 输入
1234567时,第一个%3d读取前3位123,第二个%2d读取接下来的2位45,剩余67被忽略。
格式说明符解析
%3d:读取最多3个数字字符,转换为整数。输入1234567时,前3位123被赋值给i,剩余4567。%2d:读取接下来的2个数字字符45,赋值给j,剩余67未被处理。
输入处理过程
- 读取
i:%3d读取123,i=123。 - 读取
j:%2d从剩余数据4567中读取前2位45,j=45。 - 剩余数据:
67未被任何说明符处理,保留在输入缓冲区但不影响当前scanf。