问题
单项选择题
若有如下程序: main() { int a,b,C,m,n,k;m=n=k=0; a=-1;b=2; C=3;if(c>0)m=a+b;if(a<=0) { if(b>0) if(c<=0)n=a=b; } else if(c>0)n=a-b; else k/=c; printf("%d,%d, %d,",m,n,k); } 则程序运行后的输出结果是( )。
A.1,0,0
B.2,-3,3
C.1,-3,3
D.1,0,3
答案
参考答案:A
解析: 本题首先声明了6个int型变量,然后分别让m、n、k为0,a为-1,b为2,c为3。接下来因为c>O为真,故执行子句“m=a=b;”,结果使m的值变为1;然后判断a是否<=0,结果也为真,进入大括号里面;由于b>O为真,再判断c<=0,为假。所以子句“n=a=b;”没有执行,跳出大括号。而后面的else if语句和else语句因为大括号的原因,使其对应第二个if语句,而第二个if语句的条件已满足(进入大括号之前),所以这两条else语句的子句不被执行,故最后输出结果为1,0,0,所以应该选择A。