更多“单选题若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是()。A ps+1B *(ps+3)C ps[0][2]D *(ps+1)+3”相关问题
  • 第1题:

    有以下结构体说明,变量定义和赋值语句: struct STD {char name[10]; int age; char ***; }s[5],*ps; ps=&s[0]; 则以下scanf函数调用语句中错误的结构体变量成员是( )。

    A.scanf("%s",s[0].name);

    B.scanf("%d",&s[0].age);

    C.scanf("%c",&(ps->***));

    D.scanf("%d",ps->age);


    正确答案:D

  • 第2题:

    若有以下定义和语句: ( ) ints[4][5](* ps)[5]; ps=s; 则对s数组元素的正确引用形式是

    A.psq+1

    B.*(ps+3)

    C.ps[0][2]

    D.*(ps+1)+3


    正确答案:C

  • 第3题:

    若有定义char s[3][4];以下对数组元素s[i][j]的各种引用形式中错误的是()。

    A.*s[i]j

    B.*sij

    C.s[i][j]

    D.**sij


    正确答案:B

  • 第4题:

    若有以下定义和语句: int s[4][5],(*p)[5]; p=s; 则指针对s数组中第三个元素的正确引用形式是( )。

    A.p[0][3]

    B.p[1][2]

    C.p[0][2]

    D.p[1][3]


    正确答案:C
    解析:“p=s;”语句将指针p指向数组s。而数组为二维数组,下标标识由0开始,所以第二个元素是下标为0行的2列元素,即p[0][2]。

  • 第5题:

    若有以下定义和语句: int s[4][5],( *ps)[5]; ps=s; 则对s数组元数的正确引用形式是

    A.ps+1

    B.*(ps+3)

    C.ps[0][2]

    D.*(ps+1)+3


    正确答案:C
    解析:本题首先定义了一个4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。此时数组元素s[i)[j]的地址为“*(ps+i)+j”,数组元素s[i][j]可表示为*(*(pe+i)+j);选项B表示的是数组元素a[3][0]的地址;选项D表示的是数组元素s[1][3]的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项C中ps[0][2]无条件等价于“*(ps[0]+2)”又无条件等价于“*(*(pe+0)+2)”,即是数组元素s[0][2]。

  • 第6题:

    若有如下定义和语句: int s[4][5],(*p)[5]; p=S; 则指针对s数组中第三个元素的正确引用形式是( )。

    A.p[0][3]

    B.p[1][2]

    C.p[0][2]

    D.p[1][3]


    正确答案:C
    解析: “p=s;”语句将指针p指向数组s。而数组为二维数组,下标标识由0开始,所以第二个元素为下标为0行的2列,即p[0][2]。

  • 第7题:

    若有说明ints[3][4]={0},则下面叙述正确的是( )。

    A.只有元素s[0][0]可得到初值0

    B.此说明语句不正确

    C.数组s中各个元素都可得到初值,但其值不一定为0

    D.数组s中每个元素均可得到初值0


    正确答案:D
    解析:本题考查数组的定义和初始化。数组可在定义时初始化,初始化值的个数可以小于或等于数组定义的元素个数,但不可以多于数组元素个数。不足部分的数组元素系统自动以0填充。故本题答案是D。

  • 第8题:

    若有下列定义,则对a数组元素地址的正确引用是( )。int a[5],*p=a;A.p+5 B.*a+1

    若有下列定义,则对a数组元素地址的正确引用是( )。

    int a[5],*p=a;

    A.p+5

    B.*a+1

    C.&a+1

    D.&a[0]


    正确答案:D
    本题考查数组元素的地址的引用。A中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:数组元素下标从0开始);B中,*a+1指的是将数组a的第一个元素加1;选项C中,不存在这种引用方式;D中,&a[0]引用的是数组的首地址。

  • 第9题:

    若有下列语句,则不能代表字符o的表达式是()。chars[20]=”programming”,*ps=s;

    • A、ps2
    • B、s[2]
    • C、ps[2]
    • D、*(ps+2)

    正确答案:A

  • 第10题:

    单选题
    若有以下说明语句inta[3][4]={2,3,4,5,3,4,5,6,4,5,6,7};则正确对数组元素引用为()。
    A

    *(a+1)

    B

    *(a[3]+2)

    C

    a[1]+3

    D

    a[0][0]


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

  • 第11题:

    单选题
    有以下结构体说明、变量定义和赋值语句 struct STD {  char name[10];  int age;  char sex; }s[5],*ps; ps = &s[0]; 则以下scanf函数调用语句有错误的是(  )。
    A

    scanf("%d",ps->age);

    B

    scanf("%d",&s[0].age);

    C

    scanf("%c",&(ps->sex));

    D

    scanf("%s",s[0].name);


    正确答案: B
    解析:
    A项错误,ps->age是取s[0]中的age成员,scanf函数中需要传入变量的地址;B项正确,[]和.操作符优先级高于&,等价于&(s[0].age);C项正确,ps->sex是取s[0]的sex成员;D项正确,s[0].name是取s[0]中的name成员,name是char类型数组,自身就是首元素地址。答案选择A选项。

  • 第12题:

    单选题
    有以下程序: #include  main() {  int s[3][2]={1,2,3,4,5,6},*ps[3],k;  for(k=0;k<3;k++)  {   ps[k]=s[k];   printf("%d",*(ps[k]+1));  } } 程序的运行结果是(  )。
    A

    246

    B

    135

    C

    123

    D

    456


    正确答案: A
    解析:
    程序执行过程为:定义二维数组s与指针数组ps,for循环实现将二维数组每一行的首地址赋值给对应的指针数组元素,然后输出二维数组每行的第二个元素。程序的运行结果是246。答案选择A选项。

  • 第13题:

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

    A. a[2][4]

    B. a[3][3]

    C. a[0][0]

    D. a[3][4]


    正确答案:C

  • 第14题:

    若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。A.m[--i]SXB

    若有定义语句“intm[]={5,4,3,2,1),i=4;”则下列对m数组元素的引用中错误的是( )。

    A.m[--i]

    B.m[2*2]

    C.m[m[o]]

    D.m[m[i]]


    正确答案:C
    C。【解析】数组的下标是从零开始的。一维数组的一般定义方式为数型说明符数组名[常置表达式],其中“[]”中的内容可以是整型数量,也可以是整型表达式。选项C中,m[0]=5,m[m[o]]=m[5],数组下标越界。

  • 第15题:

    若有以下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10}; 则下列哪个是对该数组元素的正确引用( )

    A. a[10]

    B. a[a[3]-5]

    C. a[a[9]]

    D. a[a[4]+4]


    正确答案:D

  • 第16题:

    若有以下定义,则不能代表字符。的表达式是______。 char s[20]="programming",*ps=s;

    A.ps+2

    B.s[2]

    C.ps[2]

    D.ps+=2,*ps


    正确答案:A
    解析:ps是指针变量,ps+2是地址值,表示s[2]的地址,并不能代表s[2]的值‘o’;选项B、C、D均能代表s[2]的值‘o’。

  • 第17题:

    若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是( )。

    A.ps+1

    B.*(ps+3)

    C.ps[0][2]

    D.*(ps+1)+3


    正确答案:C

  • 第18题:

    若有以下定义: char s[20]="programming",*ps=s; 则不能代表字符o的表达式是_______。

    A.ps+2

    B.s[2]

    C.ps[2]

    D.ps+=2,*ps


    正确答案:A
    解析:ps+2就是s[2]的地址,即存放字符o的地址,所以A是错误的。

  • 第19题:

    若有以下说明和语句: int c[4][5],(*p)[5]; p=c; 能够正确引用c数组元素的是( )。

    A.p+l

    B.*(p+3)

    C.*(p+1)+3

    D.*(p[0]+2)


    正确答案:D
    解析:本题中定义了一个二维数组c和一个指针数组p,并初始化让p指向c。显然此时p中的各元素为地址,选项A中p+1,此时其中的1代表的长度是整个二维数组c的长度,故p+l将让p指向c数组后面的元素,不能引用c数组中的成员,故选项A错误;同理选项B和选项C都不正确,选项D中p[0]指的是指针数组中的第一个元素的地址即c的首地址,此时的1的长度代表的是数组C中一行的长度,故p[0]+2代表的是第3行的首地址,而*(p[0]+2)将代表第3行的第一个元素的地址,所以,4个选项中选项D符合题意。

  • 第20题:

    若有以下说明语句inta[3][4]={2,3,4,5,3,4,5,6,4,5,6,7};则正确对数组元素引用为()。

    • A、*(a+1)
    • B、*(a[3]+2)
    • C、a[1]+3
    • D、a[0][0]

    正确答案:D

  • 第21题:

    若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是()。

    • A、ps+1
    • B、*(ps+3)
    • C、ps[0][2]
    • D、*(ps+1)+3

    正确答案:C

  • 第22题:

    单选题
    若有下列语句,则不能代表字符o的表达式是()。chars[20]=”programming”,*ps=s;
    A

    ps2

    B

    s[2]

    C

    ps[2]

    D

    *(ps+2)


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

  • 第23题:

    单选题
    若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是(  )。
    A

    m[--i]

    B

    m[2*2]

    C

    m[m[0]]

    D

    m[m[i]]


    正确答案: A
    解析:
    在C语言中,数组的下标是从0开始的,所以它的上限是数组元素个数减1。如果超过这个范围来引用数据元素就会溢出,造成运行时错误。本题的数组m有5个元素,所以它的下标范围是0~4。A项,--i的值为3;B项,2*2的值为4;C项,m[0]等于5,超出范围,出现溢出错误;D项,m[i]的值为4,即m[4]的值为1。答案选择C选项。