mshd.net
当前位置:首页 >> 设有以下程序段int x=2 >>

设有以下程序段int x=2

int x=3 do { printf(“%d”,x-=2); }while ( !(--x) ); //等价于while( --x == 0 ); --x为0时,劝非”结果才是真,否则为假,结束循环 x=3 printf() x-=2=1 , while( !(--x) ) --x得到0,循环条件成立 x=0 printf() x-=2=-2 while( !(--x) ) --x得...

while(!x!=0) 等价于 while ( (!x) != 0), 则 s初始化值为0,故有 !x = 1,接着 1 != 0 ,显然,结果为真 执行while后面的循环语句 s+=++x;(注意,++是前缀的),即 s = s+(++x)[ s= 0+ 1=1] ,完成后x=1,再次进入循环判断, 根据上面的分析...

当循环执行x=3时 判断条件(x%2)为真,执行(“**%d”) 输出结果为 **3 而语句中并没有\n 即就是 不换行 然后循环执行x=4时 判断后执行(“##%d\n”) 输出结果为 ##4(并加换行) 所以结果是 **3##4 **5 而不是 **3 ##4 **5 就是这样啦~ 不知道 ...

楼主可以分析一下语句while(!x!=0)s+=++x;循环的条件是!x!=0,非x不等于零,这个X的值只有0,能够满足。所以语句只有X=0时,才实现。接着进入内部循环,s+=++x,执行后s=1,x=1。x=1,时不满足!x!=0,跳出循环,打印s,程序结束。

程序执行到x=-2时,--x = -3,

选项D 原因:'d'转换到int类型的话就是100, 'a'转换成int就是97,所以x['d'-c] == x[100-97],结果就是x[3],x[3]的值就是4

{printf("%3d",x-=2);} 这个就是x=x-2,也就是说x变成1了再输出,输出1 --x就是x=x-1的简便写法,这时候x变成0,!0就是1,所以继续做do这个循环 第二次x再减去2变成-2,所以输出-2 --x再减去1变成-3,!-3为0所以循环做到这就停止了 最后输出 1 -2

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

D肯定是错的,数组名arr是不能进行arr++或arr--那样的操作的,它类似一个常量指针 const int* q = arr; q++; // 这样是错误的 C是正确的 p+4就是将p指针的地址向后偏移4,前面有个*,表示取那个地址的值,也就是arr[4]的值

答案是A。 do{}while();是先执行循环体再判断的,!x表示当X为真时(X=1)结束循环! printf("%d\n", x++);//执行后,输入的是-3,然后X=x+1=-2,很明显循环体执行一次就结束了!所以答案是A

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com