关于C语言的问题。

麻烦帮忙详细解释一下 , 这三个选择题!谢谢。

第1个题目:就是判断while()括号里面的值是否为真,因为加了个!所以(k>0||n++)为真时while里面的判断语句就为假,因为||为逻辑与,就是判断||两边的式子是否为真,当k>0为真后,后面的式子就不用判断了,所以n并没有执行n++,所以答案为d
第二个题目也是判断while()是否执行循环,当括号里面还没为0时,他就说为真,所以他会执行死循环,当i自减到0时,判断语句为假,就跳出while循环,执行下面的语句,所以while循环里面的打印出来的值为4,2,0,因为经历了两次自减,答案为b
第三道题也是一样的,不过要注意的是,&&,先判断第一个式子是否为真,如果为假他就整体为假了就不用判断向后面的语句了,答案为B追问

第三个 具体 还是没有 弄明白,我模拟算的结果不对。
请详细解答,谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-01
1、D。while中判断的时候k>0直接就返回true了,不会进行后面的n++运算
2、B。i--先判断后自减,--i先自减再执行(输出)

3、B。思路参考上面两道,模拟运算即可追问

第三题请详细解答,谢谢

追答

首先理解我前面说的,i++先判断再加,++i是先加再判断。
接下来模拟运算即可:
3>0 && 10 && 20 && 30 判断条件false,不会再执行++x<5的运算,退出循环,但是z--仍然会计算,此时z=-1,x和y不变
最后打印结果:x=3,y=2,z=-1。选B

第2个回答  2017-08-01
//题1 
#include <stdio.h>
int main()
{
int n=2,k=1;
while( !( k>0 || n++ ));
printf("%d %d\n",k,n); //输出 1 2
//答案是D 
}

//题2 
#include <stdio.h>
int main()
{
int i=6;
while( i--)
printf("%d",--i);
printf("\n");//输出420
//答案是B 
}


//题3 
#include <stdio.h>
int main()
{
int x=0,y=5,z=3;
while( z-- >0 && ++x <5 ) y=y-1;
printf("%d,%d,%d\n",x,y,z);//输出 3,2,-1
//答案是B 
}

本回答被网友采纳
第3个回答  2017-08-01
我测试过.选B.
相似回答