itgle.com

3、若有定义:int a=0,b=0,c=0,d=0;,以下关于C语言表达式:(a || ++b) ? ++c : ++d 执行顺序的叙述正确的是()A.先执行++a,表达式++a的值为1;再执行++b,表达式++b的值为1,由此可确定(a || ++b)值为1,因此执行++cB.先执行++a,表达式++a的值为1,由此可确定(a || ++b)值为1,因此执行++cC.先执行++b,表达式++b的值为1;再执行++a,表达式++a的值为1,由此可确定(a || ++b)值为1,因此执行++cD.先执行+

题目

3、若有定义:int a=0,b=0,c=0,d=0;,以下关于C语言表达式:(a || ++b) ? ++c : ++d 执行顺序的叙述正确的是()

A.先执行++a,表达式++a的值为1;再执行++b,表达式++b的值为1,由此可确定(a || ++b)值为1,因此执行++c

B.先执行++a,表达式++a的值为1,由此可确定(a || ++b)值为1,因此执行++c

C.先执行++b,表达式++b的值为1;再执行++a,表达式++a的值为1,由此可确定(a || ++b)值为1,因此执行++c

D.先执行++b,表达式++b的值为1,由此可确定(a || ++b)值为1,因此执行++c


相似考题
参考答案和解析
1
更多“3、若有定义:int a=0,b=0,c=0,d=0;,以下关于C语言表达式:(a || ++b) ? ++c : ++d 执行顺序的叙述正确的是()”相关问题
  • 第1题:

    若有定义语句: int a[2][3],*p[3]; ,则以下语句中正确的是A ) p=a;B)p[0]=a; C) p[0]=&am

    若有定义语句: int a[2][3],*p[3]; ,则以下语句中正确的是

    A ) p=a;

    B)p[0]=a;

    C) p[0]=&a[1][2];

    D)p[1]=&a;


    正确答案:C

                                               

  • 第2题:

    若有定义语句int b=2;,则表达式(b<<2)/(3||b)的值是( )。A.4B.8C.0D.2

    若有定义语句int b=2;,则表达式(b<<2)/(3||b)的值是( )。

    A.4

    B.8

    C.0

    D.2


    正确答案:B
    2的二进制数为010,移两位后的二进制数为01000,转成十制数为8,(3||2)为真即1,8/ 1=8,所以结果为8。

  • 第3题:

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。

    A.p=a;

    B.p[0]=a;

    C.p[0]=&a[1][2];

    D.p[1]=&a;


    正确答案:C
    解析:选项A中,p为数组名,其值是不能被改变的,故非法;选项B中,p[0]的类型是int*,而a是二维数组名(类型为int[][3]),两者无法赋值,故非法:选项C中,p[0]为int型指针,&a[1][2]是int型变量的地址,可以合法赋值;选项D中,p[1]是int型指针,而&a是二维数组的地址(类型为int(*)[2][3]),两者无法赋值,故非法。所以本题应该选择C。

  • 第4题:

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。A.p=a; B.p[0]=a;

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。

    A.p=a;

    B.p[0]=a;

    C.p[o]=&a[1][2];

    D.p[1]=&a;


    正确答案:B
    选项B表示把整型数组a[o]的指针赋给p[0]。

  • 第5题:

    若有定义“int a=5,b=7;”,则表达式a%-(b%2) 运算后,a的值为( )。A.0B.1C.11S

    若有定义“int a=5,b=7;”,则表达式a%-(b%2) 运算后,a的值为( )。

    A.0

    B.1

    C.11

    D.3


    正确答案:A
    本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。

  • 第6题:

    若有定义:int x=3,y=4,z=5;则值为0 的表达式是()

    A.

    B.

    C.

    D.


    参考答案:D

  • 第7题:

    3执行完以下代码int[]x=new int[25];后,以下( )说明是正确的。

    A.x[24]为0

    B.x[24]未定义

    C.x[25]为0

    D.x[0]为空


    正确答案:A

  • 第8题:

    若有定义语句:“int x=10;”,则表达式x-=x+x的值为( )。 A.-20B.-l0C.0

    若有定义语句:“int x=10;”,则表达式x-=x+x的值为( )。

    A.-20

    B.-l0

    C.0

    D.10


    正确答案:B
    表达式x-=x+X可以写成x=x-(x+x),所以X的值为-l0。

  • 第9题:

    若有定义:int a[2][3],*p[3]; ,则以下语句中,正确的是()。

    • A、p[0]=&a[1][2];
    • B、p=a;
    • C、p[0]=a;
    • D、p[1]=&a;

    正确答案:A

  • 第10题:

    如a为int型,则与表达式a等价的C语言关系表达式是()

    • A、a>0
    • B、a!=0
    • C、a==0
    • D、a<0

    正确答案:B

  • 第11题:

    单选题
    若有定义:int a[2][3],*p[3]; ,则以下语句中,正确的是()。
    A

    p[0]=&a[1][2];

    B

    p=a;

    C

    p[0]=a;

    D

    p[1]=&a;


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

  • 第12题:

    单选题
    若有定义:int a=0,b=0,c=0,d=0;以下关于C语言表达式:(++a‖++b)? ++c:++d执行顺序的叙述正确的是(    )。
    A

    先执行++a,表达式++a的值为1;再执行++b,表达式++b的值为1,由此可确定(++a‖++b)值为1,因此执行++c

    B

    先执行++a,表达式++a的值为1,由此可确定(++a‖++b)值为1,因此执行++c

    C

    先执行++b,表达式++b的值为1;再执行++a,表达式++a的值为1,由此可确定(++a‖++b)值为1,因此执行++c

    D

    先执行++a,++b,++c,++d,使得a,b,c,d的值都为1,由此可确定(++a‖++b)值为1,因此执行++c


    正确答案: A
    解析:
    ++a表示先将变量a+1,再执行其他操作,逻辑或运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(++a‖++b)中,左操作数++a的值为1,已经可以确定整个逻辑表达式的结果为1,因此右操作数++b不再求解,直接执行表达式2,即++c,B项正确。答案选择B选项。

  • 第13题:

    若有定义语句:int a[2][3],*p[33;,则以下语句中正确的是( )。

    A.p=a;

    B.p[0]=a;

    C.p[0]=&a[1][2];

    D.p[1]=&a


    正确答案:B
    解析:本题考查的重点是指针数组与二维数组的关系。因为*p[3]定义成指针数组,从而指针数组中的任何元素都是一个地址,因此,选项B是正确的。

  • 第14题:

    若有定义:int a[3][4],则正确引用数组 a 元素的是( ) 。

    A. a[2][4]

    B. a[3][3]

    C. a[0][0]

    D. a[3][4]


    正确答案:C

  • 第15题:

    以下对一维数组c进行正确的定义初始化的语句是A.int c[10]=0; B.int c[10]={0}*10; C.int c[1]={0,0,0,0,0,0,0}; D.int c[10]={0};


    正确答案:D
    本题主要考查数组的定义和初始化。在本题中,考查的是一维数组的定义和初始化操作。一维数组的定义格式为:
         数据类型说明 数组名[n];
    一维数组的初始化格式为:
         数据类型说明 数组名[n]={元素1,元素2,……,元素n};
         或者
         数据类型说明 数组名[]={元素1,元素2,……,元素n};
    另外,在定义数组和初始化数组时需要注意:
    (1)定义数组时的n值只能使用常量,不能使用变量。
    (2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定。
    (3)数组初始化时,数组的元素类型必须与定义的类型一致,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。
    综上所述,不难找出本题正确的答案为D,在选项A和B中,数组的定义方式都是正确的,但初始化的方法不正确;在选项C中,赋值的元素个数超过了数组定义的大小,在编译时系统会报错。

  • 第16题:

    设有定义: int a=2,b=3,c=4;, 则以下选项中值为0的表达式是A.(!a==1)&&(!b==0)B.(a

    设有定义: int a=2,b=3,c=4;, 则以下选项中值为0的表达式是

    A.(!a==1)&&(!b==0)

    B.(a<b)&& !c‖1

    C.a && b

    D.all(b+b)&&(c-a)


    正确答案:A
    解析:计算逻辑表达式要注意的问题有三个:一、3个逻辑表达式的优先级从高到低依次是!(逻辑非)、&&(逻辑与)、‖(逻辑或);二、运算符&&或‖的左边运算分量分别为“假”或“真”的时候已经能够得出整个表达式的值,故右边运算分量将被“短路”,即忽略右边的表达式.三、逻辑值能够自动转换为整数值:“真”=1、“假’=0;整数值也能自动转换为逻辑值:0=“假”,非0=“真”。选项A中(!a=1)&&(!b==0)→(12==1)&&(!b==0)→(0==1)&&(!b==0)→0&&(!b==0)→0(&&右边表达式(!b==0)被“短路”);选项B中(ab)&&!c‖1→(23)&&!4‖1→1&&0‖→0‖→1;选项C中a&&b→2&&3→1选项Da‖(b+b)&&(c-a)→2‖(b+b)&&(c,a)→1(‖右边表达式(b+b)&&(c-a)被“短路”)。所以本题选A。

  • 第17题:

    若有定义:int a=5,b=2,c=1;则表达式a-b

    A.0

    B.1

    C.3

    D.-1


    参考答案:A

  • 第18题:

    若有定义:int x=3,y=4;则表达式!x||y的值为()

    A.1

    B.0

    C.3

    D.4


    参考答案:A

  • 第19题:

    若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x—y)?(x++):(y++)中的条件表达式(x—Y)等价的是( )。

    A.(x—Y<01Ix—Y>O)

    B.(x—y<0)

    C.(x—Y>0)

    D.(x—Y==0)


    正确答案:A
    条件表达式:x=表达式17表达式2:表送式3的含义是:先求解表达式1,若为非0(真),则求解表达芪2,将表达式2的值赋给x。若表达式1的值为0(假),则求辞表达式3,将表达式3的值赋给x。在本题中与表达式1::x—y)等价的是(x—Y<0I|x—Y>O)。

  • 第20题:

    若有定义:int aa[8],则以下表达式中不能代表数组元素a[1]地址的是 ______。

    A.&aa[0]+1

    B.&aa[1]

    C.&aa[0]++

    D.aa+1


    正确答案:C

  • 第21题:

    定义变量时,结构不正确的是?()。

    • A、int a=0;b=0;c;
    • B、int a=0,b=0,c=0;
    • C、int a;
    • D、int a=0,b=0;

    正确答案:A

  • 第22题:

    单选题
    若有定义:int a=0,b=0,c=0,d=0; 有C语言表达式 (a++ && b++)? c++ : d++,以下关于其执行顺序的叙述正确是(  )。
    A

    先执行a++,表达式a++的值为0,由此即可确定(a++ && b++)值为0,因此执行d++

    B

    先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++ && b++)值为0,因此执行d++

    C

    先执行a++,表达式a++的值为1;再执行b++,表达式b++的值为1,由此可确定(a++ && b++)值为1,因此执行c++

    D

    先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++ && b++)值为1,因此执行c++


    正确答案: D
    解析:
    把握前置运算和后置运算的基本运算规则。表达式1?表达式2:表达式3,若表达式1为真,则执行表达式2,否则执行表达式3。逻辑与运算符遵循“短路求值”策略,即在进行求值时,只要最终的结果已经可以确定是假,求值过程便告终止,表达式(a++&&b++)中,左操作数a++的值为0,已经可以确定整个逻辑表达式的结果为0,因此右操作数b++不再求解,直接执行表达式3,即d++,答案选择A选项。

  • 第23题:

    单选题
    若有定义:int w[3][5];则以下不能正确表示该数组元素的表达式是(  )。
    A

    *(w+1)[4]

    B

    *(*w+3)

    C

    *(*(w+1))

    D

    *(&w[0][0]+1)


    正确答案: D
    解析:
    a数组元素可用五种表达式来引用:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④(*(a+i))[j];⑤*(&a[0][0]+N*i+j)。A项,C语言中规定,方括号的优先级高于*,相当于*((w+1)[4]),不能表示数组元素。B项,*w是w[0]的地址,*w+3是w[0][3]的地址,表示数组元素w[0][3];C项,*(w+1)是w[1]的地址,表示数组元素w[1][0];D项,&w[0][0]是元素w[0][0]的地址,&w[0][0]+1是元素w[0][1]的地址,表示数组元素w[0][1]。答案选择A选项。

  • 第24题:

    单选题
    若有定义语句:int a[2][3],*p[3];则以下语句中正确的是(  )。
    A

    p[0]=&a[1][2];

    B

    p[0]=a;

    C

    p=a;

    D

    p[1]=&a;


    正确答案: D
    解析:
    声明了a是一个二维数组,p是长度为3的int *数组。A项正确,p[0]是int类型指针,可以指向二维数组中的元素。B项错误,p[0]是int类型指针,不能指向二维数组;C项错误,p是int类型指针的数组,一旦定义,不能再次赋值;D项错误,p[1]是int类型的指针,&a是二维数组的地址。答案选择A选项。