有以下程序#include <stdio.h>main(){ int x=1,y=2,z=3;if(x>y)if(y<z) printf("%d",++z);else printf("%d",++y);printf("%d\n",x++);}程序的运行结果是A)331B)41C)2D)1

题目

有以下程序

#include <stdio.h>

main()

{ int x=1,y=2,z=3;

if(x>y)

if(y<z) printf("%d",++z);

else printf("%d",++y);

printf("%d\n",x++);

}

程序的运行结果是

A)331

B)41

C)2

D)1


相似考题
更多“有以下程序#include &lt;stdio.h&gt;main(){ int x=1,y=2,z=3;if(x&gt;y)if(y&lt;z) printf ”相关问题
  • 第1题:

    有以下程序 include mare() { int x=1,y=2,z=3; if(x>y) if

    有以下程序 #include <stdio.h> mare() { int x=1,y=2,z=3; if(x>y) if(y<z) printf("%d",++z); else printf("%d",++y); printf("%d\n",x++); } 程序的运行结果是______。

    A.331

    B.41

    C.2

    D.1


    正确答案:D
    解析:本题考查的是if语句的嵌套。C语言规定else总是与它上面的最近的且不带else的if配对,所以本题else与if(yz)配对,即为内嵌if。在程序执行时,先判断if(x>y)的条件表达式x>y,即1>2,不成立,所以不执行内嵌if,直接执行“printf("%d",x++);”语句。由于x++表示在使用后再将x加1,所以输出1。

  • 第2题:

    有以下程序:main ( ){ int X=3, y=2, z=1; printf ("%d\n", x/y&~z );}

    A.3

    B.2

    C.1

    D.0


    正确答案:D
    解析:本题考核的知识点是位运算符的应用。位与运算符“&”参加运算的两个数据,按二进位进行“与”运算,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0,取反运算符“~”,用来对一个;进制按位取反,即将0变1,1变0.在prinft()函数的表达式中,“&”前面表达式的值为1(3/2=1)表示为二进制为00000001,而按位取反运算符“~”的优先级高于按位与运算符“&”,先计算“&”后面的取反运算符“~”。z的二进制表示为00000001,取反后为11111110,最后进行“&”,即“00000001&11111110”可知结果为00000000,故最后的值为0,所以,4个选项中选项D符合题意。

  • 第3题:

    有以下程序:includemain(){int x=0,y=5,z=3; while(z-->0&& ++x<5) y=y-1; pr

    有以下程序: #include <sldio.h> main() { int x=0,y=5,z=3; while(z-->0&& ++x<5) y=y-1; printf("%d,%d,%d\n",x,y,z); } 程序执行后的输出结果是( )。

    A.3,2,0

    B.3,2,-1

    C.4,3,-1

    D.5,-2,-5


    正确答案:B
    解析:当x=0,y=5,z=3时,z->0&&++x5成立,执行y=y-1;此时y=5-1=4,z=z-1=2,x=x+1=1;条件z-->0&&++x5仍然成立,继续执行y=y-1,此时y=y-1=3,z=1,x=2;条件z-->0&&++x5仍然成立,继续执行y=y-1,此时y=y-1=2,z=0,x=3;条件不再成立,执行条件判断后x=3,y=2,z=-1。

  • 第4题:

    有以下程序:includemain(){int x=3,y=2,z=1; printf("%d\n",x/y&~z);程序运行后的

    有以下程序: #include <stdio.h> main() { int x=3,y=2,z=1; printf("%d\n",x/y&~z); 程序运行后的输出结果是( )。

    A.3

    B.2

    C.1

    D.0


    正确答案:D
    解析:&是按位“与”运算符,若参加运算的两个运算量的相应位都为1,则该位的结果值为1,否则为0。~是“取反”运算符,用来对一个二进制数按位取反,即将0变1,1变0。对于x/y&~z,先计算x/y的值,结果为1,用十六进制表示为0001;z用十六进制表示为0001,则~z为FFFE;最后进行&运算,整个表达式的值为0。

  • 第5题:

    请选出以下程序的输出结果______。includesub(x,y,z)int x,y,*z;{ *z=y-x;}main(){int

    请选出以下程序的输出结果______。 #include<stdio.h> sub(x,y,z) int x,y,*z; { *z=y-x;} main(){ int a,b,c; sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf("%d,%d,%d\n",a,b,c); }

    A.5,2,3

    B.-5,-12,-7

    C.-5,-12,-17

    D.5,-2,-7


    正确答案:B
    解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a),10和5属于值传递,a是属于地址传递,也就是a与z指向了同—个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

  • 第6题:

    【单选题】执行以下程序后,输出的结果是______。 include "stdio.h" main() { int w=4,x=3,y=2,z=1; printf("%dn",(w<x?w:z<y?z:x)); }

    A.4

    B.2

    C.1

    D.3


    11122