itgle.com
参考答案和解析
正确答案:C
解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使 y的值加1。此题中执行z=x++,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y++后,y=2,执行++后,y=3;故答案选C。
更多“有以下程序 main() {int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); } 程序运行后的输出结果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1”相关问题
  • 第1题:

    下列程序的运行结果是_______。

    main()

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

    printf("%d,",x<y?y:x);

    primf("%d,",z<y?x++:y++);

    primf("%d,%d",x,y);

    }


    正确答案:2213
    2,2,1,3 解析:本题考查++,--运算符和条件运算符的使用。
    “表达式1?表达式2:表达式3”的功能是:表达式 1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。
    本题中,x=1,y=2时,xy成立,输出y的值2;y=2, z=3时,zy不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

  • 第2题:

    有以下程序: void f(int v , int w) { int t; t=v;v=w;w=t; } main() { int x=l,y=3,z=2; if(x>y} f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); } 执行后输出结果是

    A.1,2,3

    B.3,1,2

    C.1,3,2

    D.2,3,1


    正确答案:C
    解析:本题考核的知识点是函数的调用和if-else语句的应用。C语言规定else总是和离它最近的if语句配对。分析可以知道,函数f()作用是让形参v和形参w的值交换。在i函数中首先定义了三个变量x。y和z。然后再执行下面的if-else语句.由程序可以看出第—个else和第一个订搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x,y,z传给形参v和w,以后行参和实参再无联系,故通过if语句调用f()函数后,x、y和z的值并没有改变。故最后输出的x、v和z的值为1、3和2,所以,4个选项中选项C符合题意。

  • 第3题:

    有如下程序 main() { int y=3,x=3,z=1; printf("%d%d\n",(++x,y++),z+2); } 运行该程序的输出结果是______。

    A.3 4

    B.4 2

    C.4 3

    D.3 3


    正确答案:D
    解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

  • 第4题:

    有以下程序的输出结果是( ) void f(int v , int w) { int t; t=v;v=w;w=t; } main( ) { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf(“%d,%d,%d\n”,x,y,z);}

    A.1,2,3

    B.3,1,2

    C.1,3,2

    D.2,3,1


    正确答案:C
    解析:在本题中,main函数中的x,y,z在f函数调用前后不会发生值的变化。

  • 第5题:

    若有以下程序段;includeusing namespace std;int main(){ int a[]={1,4,5}; int *p=&

    若有以下程序段; #include<iostream> using namespace std; int main() { int a[]={1,4,5}; int *p=&a[0],x=6,y,z; for(y=0;y<3;y++) z=((*(p+y)<x) ? *(p+y):x); cout<<z<<end1; return 0; } 程序运行后的输出结果是( )。

    A.1

    B.4

    C.5

    D.2


    正确答案:C
    解析:本题考核指针的运算。①程序首先定义了一整型数组a,并赋初值1,4,5。即a[0],a[1]和a[2]的值分别为1,4和5。程序还定义了一个整型指针p,并初始化它指向数组元素a[0]。②在for循环语句中,赋值语句“z=((*(p+y)x)?*(p+y):x);”可等价为:“z=(aly]x)?a[y]:x”。因为表达式中的“*(p+y)=p[y]=a[y]”。③for语句每循环一次,就给变量z重新赋值一次,z的值其实就是数组和x相比较,将数组a中的最大值赋给z。当y=2后,退出循环,输出结果是5。

  • 第6题:

    下面程序的输出结果是 ( ) main( ) {int x,y,z; x=0;y=z=-1; x+=-z - - -y printf("x=%d\n",x); }

    A.x=4

    B.x=0

    C.x=2

    D.x=3


    正确答案:C

  • 第7题:

    有以下程序: main() {int x,y,z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d,%d\n",x,y,z); 程序运行后的输出结果是( )。

    A.2,3,3

    B.2,3,2

    C.2,3,1

    D.2,2,1


    正确答案:C
    解析:z=x++是先把x的值1赋给z,所以z=1,然后再把x加1赋给x,x=2,++y后y又加1,所以y=3。

  • 第8题:

    有以下程序:includefun(int x,int y,int z){z=x*y;}main(){int a=4,b=2,c=6; fun(a,b,

    有以下程序: #include <stdio.h> fun(int x,int y,int z) { z=x*y;} main() { int a=4,b=2,c=6; fun(a,b,c); printf("%d",c); } 程序运行后的输出结果是( )。

    A.16

    B.6

    C.8

    D.12


    正确答案:B
    解析:本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中c的值未改变,仍然是6。

  • 第9题:

    有如下程序 main() {int y=3,x=3,z=1; printf("%d\n",(++x,y++),z+2); } 运行该程序的输出结果是_____。

    A.3 4

    B.4 2

    C.4 3

    D.3 3


    正确答案:D
    解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

  • 第10题:

    有以下程序 void f(int v,int w) { int t; t=v;v=w;w=t } main() {int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); pfintf("%d,%d,%d\n",x,y,2); } 执行后输出结果是

    A.1,2,3

    B.3,1,2

    C.1,3,2

    D.2,3,1


    正确答案:C
    解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了三个变量x、y和z。 然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x,y,z传给形参v和w,以后形参和实参再无联系,故通过if语句调用f()函数后,x、y和x的值并没有改变。故最后输出的x、y和z的值为1、3和2。

  • 第11题:

    有以下程序 void f(int v,int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d/n",x,y,z); }执行后输出结果是()

    • A、1,2,3
    • B、3,1,2
    • C、1,3,2
    • D、2,3,1

    正确答案:C

  • 第12题:

    单选题
    有以下程序#include main(){ int x,y,z;  x=y=1;  z=x++,y++,++y; printf(%d,%d,%d,x,y,z);}程序运行后的输出结果是(  )。
    A

    2,3,1

    B

    2,3,2

    C

    2,3,3

    D

    2,2,1


    正确答案: D
    解析:
    考查逗号表达式。注意区分,z=x++是先将x的值赋给z,在令x自增;z=++x是先将x自增,再将自增后的值赋给z;而无论是++x还是x++,都会完成x自增的运算。对于表达式“z=x++,y++,++y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式改成“(z=x++),(y++),(++y);”。然后从左向右先计算表达式z=x++,后缀自增运算先进行其他运算,再执行自增运算,所以z的值为1,x的值为2,再计算逗号表达式第二个表达式y++,此时y的值为1,y++的值为2,最后计算第三个表达式++y,y的值为3。答案选择A选项。

  • 第13题:

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

    A.3

    B.2

    C.-1

    D.0


    正确答案:D
    解析:本题中表达式x/y&~z中运算符优先级的顺序为:~(按位取反)、/(除)、&(按位与),即首先执行~z得11111110,然后执行x/y=3/2=1,最后执行1&11111110=00000001 &11111110=00000000=0。

  • 第14题:

    有以下程序:include void f(int v, int w){int t; t=v; v=w; w=t;}main(){int x=1,y=3

    有以下程序: #include <stdio.h> void f(int v, int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d\n",x,y,z); } 执行后的输出结果( )。

    A.1,2,3

    B.3,1,2

    C.1,3,2

    D.2,3,1


    正确答案:C
    解析:程序中if语句的条件只有y>z为真,所以执行f(y,z)。函数f的功能是交换两形参的值,但由于实参和形参都是一般变量,因此形参变量值的交换不能影响实参的值,main函数中的y和z并来互换,因此输出结果为:1,3,2。

  • 第15题:

    有以下程序 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。

  • 第16题:

    有以下程序: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。

  • 第17题:

    有以下程序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,~z的值为0,所以进行&运算后,整个表达式的值为0。

  • 第18题:

    有以下程序: main() { int x=5,y=2,z=1; printf("%d\n",x%y&~z); }程序运行后的输出结果为______。

    A.3

    B.2

    C.1

    D.0


    正确答案:D

  • 第19题:

    有以下程序; main() { int y=3,x=3,z=1; printf("%d %d\n",(++x,y++),z+2); } 执行后的输出结果是( )

    A.3 4

    B.4 2

    C.4 3

    D.3 3


    正确答案:D

  • 第20题:

    有以下程序: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。

  • 第21题:

    如下程序的运行结果是______。 include main() { int x=y=3,z=1; printf ("%d%d\n",(++

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

    A.3 4

    B.4 2

    C.4 3

    D.3 3


    正确答案:D

  • 第22题:

    下列程序的运行结果是( )。main(){ int x=1,y=3,a=0; while(x++!=(y=1)) { a+1; if(y<x)break; } printf("%d,%d,%d\n”,x,y,a) ;}

    A.2,3,2

    B.2,3,1

    C.1,3,3

    D.3,1,2


    正确答案:D
    解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,yx不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,yx成立,执行break语句退出循环。

  • 第23题:

    单选题
    有以下程序 void f(int v,int w) { int t; t=v; v=w; w=t; } main() { int x=1,y=3,z=2; if(x>y) f(x,y); else if(y>z) f(y,z); else f(x,z); printf("%d,%d,%d/n",x,y,z); }执行后输出结果是()
    A

    1,2,3

    B

    3,1,2

    C

    1,3,2

    D

    2,3,1


    正确答案: C
    解析: 暂无解析