定义如下一维数组:int a[5],*p;,则下列描述错误的是( )。A.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的

题目

定义如下一维数组:int a[5],*p;,则下列描述错误的是( )。

A.表达式p=p+1是合法的

B.表达式a=a+1是合法的

C.表达式p-a是合法的

D.表达式a+2是合法的


相似考题
更多“定义如下一维数组:int a[5],*p;,则下列描述错误的是( )。A.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的”相关问题
  • 第1题:

    有如下定义:inta[5],*p;p=a;则下列描述错误的是()。

    A.表达式p=p+1合法的

    B.表达式a=a+1是合法的

    C.表达式p-a是合法的

    D.表达式a+2是合法的


    正确答案:B

  • 第2题:

    若有定义: int*p; 则下列各选项中,不同于表达式“*p=*p+1;”的是( )。

    A.*p++;

    B.++*p;

    C.*p+=1;

    D.++(*p);


    正确答案:A
    解析:题目中的语句“*p=*p+1;”是将指针变量p所指向的存储单元的值加1,然后再放入p所指向的存储单元中。选项A中,语句“*p++;”,当把该表达式赋给一整型变量k时,就会发现,原语句可变为“k=*p;p=p+1;”,即语句“*p++”最后所执行的是p的值(即p中存放的地址)加1,与题中语句“*p=*p+1;”的意思不同。再来看选项B,C,D,选项B中的语句可表示为“*p=*p+1;”。选项C中的语句可表示为“*p=*p+1;”。选项D中的语句也可表示为“*p=*p+1;”。

  • 第3题:

    if语句的基本形式为:if(表达式)语句,其中“表达式”( )。

    A.可以是任意合法的表达式

    B.必须是逻辑表达式

    C.必须是逻辑表达式或关系表达式

    D.必须是关系表达式


    正确答案:A
    解析:本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。

  • 第4题:

    以下是while语句的基本形式: while(表达式){语句:} 其中“表达式”( )。

    A.必须是逻辑表达式

    B.必须是关系表达式

    C.必须是逻辑表达式或关系表达式

    D.可以是任意合法的表达式


    正确答案:D
    解析:本题考查while表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。

  • 第5题:

    下列是if语句的基本形式: if(表达式)语句 其中“表达式”( )。

    A.必须是逻辑表达式

    B.必须是关系表达式

    C.必须是逻辑表达式或关系表达式

    D.可以是任意合法的表达式


    正确答案:D
    D。【解析】在C语言中if关键字后的一对圆括号中的表达式可以是c语言中任意合法的表达式。

  • 第6题:

    已知定义“int x = 1, *p”,则合法的赋值表达式是( )。

    A、p = &x

    B、p = x

    C、*p = &x

    D、*p = *x


    参考答案A

  • 第7题:

    有如下定义: int a[5]={1,3,5,7,9},* P=a; 下列表达式中不能得到数值5的是( )。 A.a[2]SXB

    有如下定义: int a[5]={1,3,5,7,9},* P=a; 下列表达式中不能得到数值5的是( )。

    A.a[2]

    B.a[3]

    C.*(P+2)

    D.+P+4


    正确答案:B
    本题考查指向数组的指针,本题中指针变量P指向数组a,直接使用数组下标即可取值,数组F标是从0开始标号的,所以a[2]能取到5,而a[3]取不到5,(:选项中使用指针后移方法能够取到5,D选项中*P为1,所以*P+4为5。

  • 第8题:

    若有定义和语句: int a[10]={1,2,3,4,5,6,?,8,9,10},* p=a; 则不能表示a数组元素的表达式是 ( )

    A.* p

    B.a[10]

    C.* a

    D.a[p-a)


    正确答案:B

  • 第9题:

    若已定义   struct num{    int a;    int b;   float f;  } n={1,3,5.0};  struct num *p=&n;  则表达式p->b/n.a*++p->b的值是  ①  ,表达式(*p).a+p->f的值是  ②  。


    正确答案: ①12
    ②6.0

  • 第10题:

    下列不是合法for语句的是()

    • A、for(表达式1;;)
    • B、for(表达式1,表达式2,表达式3)
    • C、for(;表达式2;)
    • D、for(;;表达式3)

    正确答案:B

  • 第11题:

    假定已有整型变量x的定义,则(x+1)++是一个合法的表达式。


    正确答案:错误

  • 第12题:

    单选题
    以下叙述中正确的是(  )。
    A

    在对指针进行加、减算术运算时,数字1表示1个存储单元的长度

    B

    如果p是指针变量,则*p表示变量p的地址值

    C

    如果p是指针变量,则&p是不合法的表达式

    D

    如果p是指针变量,则*p+1和*(p+1)的效果是一样的


    正确答案: D
    解析:
    A项正确,在对指针进行加、减运算时,数字“1”不再代表十进制整数“1”,而是指1个存储单元长度。B项错误,*p表示p的值;C项错误,&p表示变量p的地址;D项错误,*p+1是先取p的值,然后执行+1操作,*(p+1)是先对指针移动1个存储空间,然后取值。答案选择A选项。

  • 第13题:

    定义如下一维数组: inta[5],*p=a; 则下面描述中,错误的是( )。

    A.表达式p=p+1是合法的

    B.表达式a=a+1是合法的

    C.表达式p-a是合法的

    D.表达式a+2是合法的


    正确答案:B
    解析:本题考核指针与数组的关系。对于选项A,由于在定义时指针p指向数组a[0],那么表达式“p=p+1”就是让指针p指向数组中的元素a[1],所以是合法的。对于选项C,数组名a代表该数组的首地址,指针p中存的也是地址,所以它们之间可以进行加减运算。对于选项D,数组名a代表该数组的首地址,那么表达式“a+2”代表的是数组元素a[2]的地址。对于选项B,由于数组名代表该数组的首地址,并且只能引用该地址而不能进行修改,所以是不合法的。

  • 第14题:

    以下是if语句的基本形式: if(表达式) 语句 其中“表达式”______。

    A.必须是逻辑表达式

    B.必须是关系表达式

    C.必须是逻辑表达式或关系表达式

    D.可以是任意合法的表达式


    正确答案:D
    解析:本题主要考查关于if语句的说明,if后面圆括号中的表达式,可是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型、指针型等。)

  • 第15题:

    表达式‘5‘一‘1‘的值是( )。

    A.整数4

    B.字符4

    C.表达式不合法

    D.字符6


    正确答案:A
    在C语言中,字符都是变为其对应的ASCⅡ码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCⅡ码值相差仍是4。

  • 第16题:

    若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10},* p=a则不能表示a数组元素的表达式是 ( )

    A.* p

    B.a[10]

    C.* a

    D.a[p-a]


    正确答案:B

  • 第17题:

    有如下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 则数值为9的表达式是( )。 A.*P+9SXB

    有如下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 则数值为9的表达式是( )。

    A.*P+9

    B.木(P+8)

    C.*P+=9

    D.P+8


    正确答案:B
    本题考查指向数组的指针,本题中指针变量P指向数组a,那么*P的值就是1,即表示数组的第一个元素,那么数值为9的表达式就是将指针向后移动8个地址,即P+8指向的是数组元素值为9,所以数值为9的表达式是*(P+8)。

  • 第18题:

    下列不是合法for语句的是( )

    A.for(表达式1;;)

    B.for(表达式1,表达式2,表达式3)

    C.for(;表达式2;)

    D.for(;;表达式3)


    答案:B

  • 第19题:

    若有如下程序段: main() {int n=0; while(printf("*")) {n++; if(n<3)break;} } 则下列描述正确的是( )

    A.其中循环控制表达式与0等价

    B.其中循环控制表达式与'0'等价

    C.其中循环控制表达式是不合法的

    D.以上说法都不对


    正确答案:B

  • 第20题:

    设有以下定义: int a[3][3]={1,2,3,4,5,6,7,8,9}; int(*Ptr)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是_______。

    A.*((*ptr+1)[2])

    B.*(*(p+5))

    C.(*ptr+1)+2

    D.*(*(a+1)+2)


    正确答案:D
    解析:*(p+5)所指向的数组元素是a[1][2],所以B不对;ptr所指向的是—个含有三个元素的一维数组,所以A和C是错误的。

  • 第21题:

    若有以下的定义、说明和语句,则值为101的表达式是()

    • A、*p->b
    • B、p->a
    • C、++(p->a)
    • D、(p++)->a

    正确答案:C

  • 第22题:

    对于foreach语句和for语句,下列说法错误的是()

    • A、 for语句与foreach语句在结构上不一样,前者有3个表达式,表达式间用分号隔开;后者仅有一个“表达式”,形式为“数据类型 变量 in 集合表达式”
    • B、 语句for(;true;);是合法的,但是个死循环;“foreach(true);”也是合法的,也是一个死循环
    • C、 语句for(;true;);是合法的,但是个死循环;而“foreach(true);”是非法的
    • D、 语句块“ int[] a={1,2}; foreach(int i in a);”是合法的。

    正确答案:B

  • 第23题:

    单选题
    下列不是合法for语句的是()
    A

    for(表达式1;;)

    B

    for(表达式1,表达式2,表达式3)

    C

    for(;表达式2;)

    D

    for(;;表达式3)


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