问题 单项选择题

有以下程序段:
int a, b, c;
a=10; b=50; c=a;
if(a>b) a=b, b=c; c=a;
printf("a=%d b=%d c=%d\n", a, b, c);
程序的输出结果是( )。

A) a=10 b=50 c=10
B) a=10 b=50 c=30
C) a=10 b=30 c=10
D) a=50 b=30 c=50

答案

参考答案:A

解析: 本题考查的是if语句。本题是一道陷阱题,语句if (a>b) a=b, b=c; c=a; 看上去好像a=b,b=c;c=a;都是if的子句,其实只有第1个分号及其之前的语句a=b,b=c; 是if的子句,c=a;是紧接着的语句,跟if的条件无关,始终会被运行的。题目中,a=10,b=50,所以a>b条件为假,则a=b,b=c;不会被执行,而c=a;会被执行。所以最终输出结果是a=10 b=50 c=10,应该选择A)。

单项选择题 A1型题
单项选择题