问题 单项选择题

有以下程序段:
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型题