while(!x)不是指当x==0吗?为什么程序段只执行一次?

7、 以下程序段的描述,正确的是____C_____。
x= -1;
do
{x=x*x;}
while(!x);
A.死循环 B.循环执行两次 C.循环执行一次 D.有语法错误

do while循环是直到型循环。
直到型循环,是先执行循环体,再判断条件,如果条件满足,则继续循环,否则推出循环。也就是不管条件满不满足,它至少执行一次循环体,所以直到型循环中循环体的执行次数是N >=1
x初值为-1.do一次后x=1.
进行判断,而表达式(!x)仅可能有两种值0或者1.
while(!x)是说,当且仅当!x值为0时退出循环,否则继续执行do语句,再判断(!x)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-10
while里面为真的时候,才会循环执行。
你可以理解!x就是x==0,那么当循环一次之后,x等于1,不等于0,所以while里面为假,不再执行循环。
第2个回答  2011-02-11
int x=3,y=1; while(--x!=y/x) y+=2;
第一次循环x的值是2 因为--x先减1再计算,y=1
第二次循环x的值是1 ,y=3
第三次循环x的值是0,出错。
相似回答