c语言简单的一个问题

来源:百度知道 编辑:UC知道 时间:2024/09/27 05:45:50
{C语言题目}若x=2, y=3, z=4, 则下列表达式的值分别是:(选择1项)
(1)(z>=y>=x)? 1:0(2) z>=y && y>=x
A) 10
B) 00
C) 11
D) 01
请问为什么选D

{C语言题目}下面程序输出的结果是:(选择1项)
#inlcude <stdio.h>
void main(){
int n=0;
while(n++<=1)
printf(“%d\t”, n);
printf(“%d\n”, n);}

A) 1 2 3
B) 0 1 2
C) 1 1 2
D) 1 2 2
为什么选A

{C语言题目}以下程序输出的结果是()(选择1项)
#include()
void main()
{ int x=3;
do{
printf(“%3d”, x-=2);
}while(- - x);
}
A) 1
B) 30 3
C) 1 -21
D)死循环
为什么选A

第一个x>=y是假,所以是0.而z>=y && y>=x都是真,所以与完后为真,是1.

(1)(z>=y>=x)计算机是从左往右计算的z>=y成立反回值为1,不成立为零。在与后面的比较

1: 以为z>y为真结果为1 然后比较1>z 结果为假 所以为假 就是0
z>=y为真 y>=z为真 真与真还是真 所以为1 所以是 d
2: 首先是 n=0 n++但是这里不能先加 要先比较,以为它优先,然后在加1 所以第一个输出1 第二个一样道理,先比较1《=1 所以又加1 =2 输出2 第三次 因为2《=1为假,所以+1=3,跳出while 输出为3

3:首先进入do 然后x-=2 x=1 输出1 --x 此时 先-,然后比较是否满足while循环 不满足 跳出

(1) 因为z>=y为真即为1,1再与后面比较即1>=x,此式就为假,前面整个式子就为假,当然(z>=y>=x)? 1:0 就等于0了,后面的就容易多了
(2) 其实这个题就相当于这样的:
#inlcude <stdio.h>
void main(){
int n=0;
while(n++<=1)
{
printf(“%d\t”, n);
}
printf(“%d\n”, n);}
首先我们知道n++是先赋值后加1,当n=0是进入while循环,n<=0成立,执行循环,输出n=1,继续循环,n(1)<=1成立,输出n=2,此时执行n++<=1判断条件时不符合循环条件,就跳出循环,即执行printf(“%d\n”, n);输出n=3了。
(3)首先执行一次do循环x-=2即相当于x=x-2,
输出x=1,再判断循环条件,条件--x等于0就跳出循环了,所以就输出1了!