问题 单项选择题

若有如下程序: main() { int n=2; do {printf("%d",n--);} while(!--n)); } 则程序运行后的输出结果是( )。

A.2

B.11

C.1

D.20

答案

参考答案:D

解析: 本题首先定义了一个int型变量n,并初始化为2。然后进入do-while循环,do-while循环首先执行一遍循环体,输出表达式n--的值,此时表达式n--的值是n自减之前的值2,输出一个2后,n的值变为1。然后判断do-while的循环条件!(--n)是否为真,此时表达式--n的值为n自减之后的值0,!0为真,故第二次执行循环体“printf("%d",n--);”此时n的值为0,所以执行结果为:输出一个0,n的值变为-1。此时循环条件!(--n)=!(-2)为假,程序结束。故程序运行后的输出结果是20,应该选择D。

单项选择题
判断题