x=3; do {printf(“%2d”,x--);} while(!x); A.3 2 1

作者&投稿:宗政斩 (若有异议请与网页底部的电邮联系)
int x=3; do {printf("%3d",x-=2); } while(!(--x));~

(1)do 循环,先执行一次循环体,不管循环条件是真是假。
x -= 2; 是 x=x-2,x 等于1
输出 1
(2)进 while 条件判断
--x 是前缀减,需要先减1再使用,变 x=x-1=0
0 为假,非0 为真,所以 返回去 执行循环
(3) x -= 2; x 等于 -2
输出 -2
(4) 进 while 条件判断
--x 是前缀减,需要先减1再使用,变 x=-2-1 得 x=-3
-3 不是0, 不是0 就是 真。
做 !() 非运算, !( 真) 得 假
是假,所以 while 循环 结束。

答,执行本段 输出 1 -2

printf(" %d
",x -=2);首先执行这句代码,x-=2即x=x-2;因为X初值为3,所以,x=x-2=1;然后执行while(!(--x)); --x得到x=0, !就是取反,所以!(--x)为真,再次执行printf(" %d
",x -=2);,0-2=-2 结果就是这样得到的

do while结构,就是不管while的条件是真是假,你也要先运算一次在判断真假。最后面的while,你要看好了,上面写了while(!x),什么意思?就是说当你的!x为真的时候,继续循环,否则的话就跳出循环并输出。
你要是不明白!x意思的话也没关系,你只需要知道当x的值为0的时候,!x才是真,如果x值不等于0,那就是假。然后你看看题目,题目上面x被赋值为3,既然x=3了,那么x就是非零数,所以!x就是假的,既然是假的那程序还会继续循环吗?不会,它会直接跳出循环并输出,因为不满足循环条件。x=3,它输出的就是3,因为x--它是先运算了再自减1,也就是说它进入第二次循环x才会减1变成2,然而这个程序根本就没有进行第二次循环,所以直接输出3,至于为什么3前面有个空格是%2d的作用,因为输出的只有一个3,一位数,所以2d就要在3的前面空一个空格,变成()3,如果%4d的话就是空两个,变成 ()()3,如果%d就不空格直接输出一个3
你如果还是不明白,你可以试一下把while(!x)改成while(x),把x--改成--x,或者把x的值改成4,再看一下输出结果你就明白,什么意思了

前面是有空格的,这道题的考点是do-while的使用,空格只是为了分开后面的数字,显示方便读取。所以不用纠结这个空格,选B就可以。


巩义市18651581282: 有以下程序题;int x=3;do{printf("%3d",x - =2);}while(!(--x));程序段的输出结果是:A)1 B)3 0 C)1 - 2 D)死循环我不知道while(!(--x))怎样看 -
魏郭洛那:[答案] x-=2,x=1,打印出1; --x,x=0 !(0)=true; x-=2,x=-2;打印出-2; !(-3)=false; 循环结束; 除了0之外,所有数字转换成布尔值都是true;

巩义市18651581282: 以下程序求值 int x=3; do {printf(“%3d”,x - =2);} while(!( -
魏郭洛那: 第一次是1,即x=3,x-=2打印出为1,这个时候--x,为 0,while(!0)为真,继续执行打印,此时,x=0,所以x-=2,得到-2.两次打印连在一起就是1-2,第一次为1,第二次为-2

巩义市18651581282: int x=3; do { printf(“%3d”, x - =2); }while(!(--x)); -
魏郭洛那: int x=3; do { printf(“%3d”, x-=2); }while(!(--x)); 结果应该是:1,-2 第一次循环:x=3-2=1;输出再执行--x ; x= 0 取反,条件为真 继续循环 第二次循环:x=0-2=-2 输出 再执行--x; x= -3 取反,条件为假,退出循环 注意只要不是为0,负数取反也是真

巩义市18651581282: C语言do....while语句问题,帮帮忙,谢谢啦
魏郭洛那: 步骤:x=3; --> 执行printf("%3d",x-=2);-->此时的x的值为1,打印出1,因为x-=2等价于x=x-2.-->判断 while()的表达式是否为真,因为“--”运算符优先级大于“!”逻辑非运算符,所以x先自减,这时候的x=0,进行逻辑非运算后,!0的值为...

巩义市18651581282: main() { int x=3; do{ printf("%d",x=2); } w -
魏郭洛那: 这代码写的真蛋痛,假定头文件已包含.先说输出结果 :2 main() { int x=3; //这句不解释 do{ printf("%d",x=2); //x=2,表达式的结果为2,同时x赋值为2,所以输出:2 } while(!(––x)); //--x先自减,x由2变1,再对1 取非.1是整形,取非前先转换成BOOL型,转换规则,0为false,非0 true, 1转换成bool型后是 true, 取非后是 false; 不满足循环条件,退出循环.}

巩义市18651581282: C语言(!( -- x)) -
魏郭洛那: 1. “!(--x)”的意思是x先自减1,然后再对x求逻辑非. 2. 第一次循环,x=3,在输出x之前,先做x=x-2的运算,所以输出x=1.然后x自减1然后求非,即x=x-1,所以x=0.while判断求x=0的非,得真值,所以继续第二次循环第二次循环,x=0,先做x=x-2 =》 x=-2,所以输出-2.

巩义市18651581282: int x=3; do {printf("%3d",x - =2); } while(!(--x)); -
魏郭洛那: 第一次执行完 printf("%3d",x-=2); 后x=1,打印结果1 然后--x为0,取反后为1,条件为true,继续执行循环 第二次执行完 printf("%3d",x-=2); 后x=-2,打印结果是-2,--x得到-3,取反后是0,循环结束

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网