问题
单项选择题
有以下程序段:
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)。