参考答案和解析
7
更多“23. 若定义int a[][4]={1,2,3,4,5,6,7,8};,a[1][0]的值是()。 A. 3 B. 4 C. 5 D. 1”相关问题
  • 第1题:

    以下能正确定义一维数组的选项是

    A.int a[5]={0,1,2,3,4,5};

    B.char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

    C.char a={′A′,′B′,′C′};

    D.int a[5]="0123";


    正确答案:B
    解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。

  • 第2题:

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

    A. a[2][4]

    B. a[3][3]

    C. a[0][0]

    D. a[3][4]


    正确答案:C

  • 第3题:

    以下能正确定义一维数组的选项是( )。

    A.int a[5]=(0,1,2,3,4,5);

    B.char a[]={0,1,2,3,4,5);

    C.char a={A ,B,C};

    D.int a[5]="0123";


    正确答案:B
    数组1标从0开始,A选项中所赋值的个数超过了数组的长度;C选项中定义a为字符型变量,而不是数组,赋值错误;D选项中,整型数组不能赋字符串。

  • 第4题:

    有如下定义语句:int a[]={1,2,3,4,5);,则对语句int *p=a;正确的描述是( )。

    A.语句int *p=a;定义不正确

    B.语句int *p=a;初始化变量p,使其指向数组对象a的第一个元素

    C.语句int *p=a;是把a[0]的值赋给变量p

    D.语句int *p=a;是把a[1]的值赋给变量p


    正确答案:B

  • 第5题:

    以下数组定义中错误的是______。

    A.int x[][3]={0};

    B.int x[2][3]={{1,2},{3,4},{5,6}};

    C.int x[][3]={{1,2,3},{4,5,6}};

    D.int x[][3]={1,2,3,4,5,6};


    正确答案:B
    解析:C语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,并且要有足够的空间来保证定义的数组长度始终大于等于需要存放的元素的长度。选项B中行数定义为2行,但实际却需要存放3行元素故不正确。

  • 第6题:

    下列说法正确的是( )。

    A.定义int a[4]={1,3};,则a[0]=1,a[1]=3,a[3]的值不确定

    B.定义static int a[4];,则元素值不确定

    C.const int x;x=5;表示给常量x赋初值

    D.定义int a[4];,则其元素的值是不确定的


    正确答案:D
    解析:当定义一个static数组时,虽未初始化,但元素值默认为0;对非static的数组,没有赋初值,则其元素中的值为不确定的;若赋初值但数据不够用,则其他元素值初始化为0。

  • 第7题:

    有以下程序:includedefine N 8void fun(int*x,int i){*x=*(x+i)+1;}main(){int a[N]=

    有以下程序: #include<stdio.h> #define N 8 void fun(int*x,int i) {*x=*(x+i)+1;} main() {int a[N]={1,2,3,4,5,6,7,8},i; fun(a,2); for(i=0;i<N/2;i++) {printf("%d",a[i]);} printf("\n"); } 程序运行后的输出结果是( )。

    A.1 3 1 3

    B.3 2 3 4

    C.4 2 3 4

    D.1 2 3 4


    正确答案:C
    解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。

  • 第8题:

    若有定义:int a[3][4],( )不能表示数组元素a[1][1]。

    A.* (a[1]+1)

    B.* (&a[1][1])

    C.( * (a+1))[1]

    D.* (a+5)


    正确答案:D

  • 第9题:

    下列合法的数组定义是______。

    A.int a[]="string";

    B.int a[5]={0,1,2,3,4,5};

    C.char s="string";

    D.char a[]={0,1,2,3,4,5};


    正确答案:D
    解析:选项A错在用字符串对整型数组赋值;选项B错在初始化表中数据的个数多于数组的最大长度;选项C错在没有用数组存储字符串;选项D的初始化表中虽然是5个数,但实际相当于把ASCⅡ码值是这5个整数的字符赋值给数组,因此是正确的。

  • 第10题:

    有以下程序:include void f(int * x,int * y) int t;t= *x; *x= *y; *y=t;main ( ){in

    有以下程序:#include <stdio.h>void f(int * x,int * y) int t; t= *x; *x= *y; *y=t;main ( ){ int a[8] = { 1,2,3,4,5,6,7,8} ,i, * p, * q; p=a;q =&a[7]; while(p<q) { f(p,q) ;p ++ ;q --; } for(i =0;i<8;i ++ ) printf(" % d," ,a[i]); }程序运行后的输出结果是( )。

    A.8,2,3,4.,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在main函数中,通过P=a;q=&a[7];指针变量p指向数组的第一个元素,指针变量q指向数组的最后一个元素。通过调用函数f(p,q)进行前后对称位置上的数组元素的交换。当while循环4次(即p=q)后,a数组中各元素的值分别为8,7,6,5,4,3,2,1,所以程序输出的结果为:8,7,6,5,4,3,2,1,

  • 第11题:

    以下能正确定义一维数组的选项是()

    • A、int a[5]={0,1,2,3,4,5};
    • B、char a[]={0,1,2,3,4,5};
    • C、char a={’A’,’B’,’C’};
    • D、int a[5]="0123";

    正确答案:B

  • 第12题:

    以下能正确定义一维数组的是()

    • A、int a〔5〕={0,1,2,3,4,5};
    • B、int a〔5〕=”012345”;
    • C、char.〔 〕=”012345”;
    • D、char a〔5〕={0,1,2,3,4,5};

    正确答案:C

  • 第13题:

    int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是()。

    A. 2

    B. 3

    C. 4

    D. 不一定


    参考答案B

  • 第14题:

    以下能对一维数组a进行初始化的语句是: ( )。

    A. int a[5]=(0,1,2,3,4,)

    B. int a(5)={}

    C. int a[3]={0,1,2}

    D. int a{5}={10*1}


    参考答案:C

  • 第15题:

    下列二维数组初始化语句中,正确且与语句int a[][3]={1,2,3,4,5}等价的是( )。

    A)int a[2][]={{1,2,3},{4,5));

    B)int a[][3]={1,2,3,4,5,0};

    C)int a[][3]={{1,0},{2,0},{3,0)};

    D)int a[2]={{1,2,3),{4,5,6)};


    正确答案:B
    此题考查的是二维数组的初始化。题干中数组a的第二个下标为3,由此可知数组a是一个2行3列的数组,初始化时朱赋初值的元素的值自动为0,所以与选项B)是等价的,最后一个元素的值为0。

  • 第16题:

    以下能正确定义一维数组的选项是______。

    A.int a[5]={0, 1, 2, 3, 4, 5);

    B.char a[]={0, 1, 2, 3, 4, 5);

    C.char a={'A', 'B', 'C'};

    D.int a[5]="0123";


    正确答案:B
    解析:A中初值的个数大于a的定义的长度,错误。C中a被定为字符却给它赋值为数值,错误。D中a是整型数组却给它赋值为字符串,错误。

  • 第17题:

    下列数组的定义中,会产生错误的是

    A.int a[]=('0','1','2','3','4','5','6');

    B.int a[10]={0,1,2,3,4,5,6};

    C.char a[5]="hello";

    D.char a[5]={'h','e','1','1','o'};


    正确答案:C
    解析:本题考核数组的定义和初始化。下面逐项进行分析:A)选项中,数组a的定义和初始化符合数组的定义和初始化语法,故正确:B)选项中,数组a初始化的值虽然没有10个,但对于少的部分,系统会自动补0,所以B)选项中数组的定义也是正确;C)选项中,数组a的长度为5,但字符串“hello”的长度为5+1=6,字符串结束符‘\0’无法存储在数组中,所以是错误的;D)选项中,数组a的定义是正确的。

  • 第18题:

    设有定义: 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。

  • 第19题:

    合法的数组定义是 ( )

    A.int a[ ]="string";

    B.int a[5]={0,1,2,3,4,5};

    C.char a="string";

    D.char a={0,1,2,3,4,5};


    正确答案:D

  • 第20题:

    有以下程序: voidf(int*x,int * y) { int t; t= *x;*x= *y;*y=t; } main() { inta[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p) { f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是______;

    A.8,2,3,4,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析: 本题的函数f是将两个指针所指的两个单元中的数值对换。指针p指向数组a的第一个元素a[0]而指针q指向数组a的元素a[7]。调用f将p和q所指元素值对换,也就是将a[0]和a[7]的值对换,对换后结果分别是8、1。P++指向a[1],q-指向a[6J,继续循环,调用f将a[1]和a [6]交换,结果变成7、1。以此类推,直到p和q相遇循环站束。数组a的值由{1,2,3,4,5,6,7,8}变成了{8,7,6,5,4,3,2,1}。输出9结果应该是:8, 7,6,5,4,3,2,1。

  • 第21题:

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

    有定义:“int a=2,b=3,c=4;”,则下列选项中值为0的表达式是( )。

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

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

    C.a&&b

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


    正确答案:A

    本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1 为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a<b为真,表达式(a<b)&&!C为假,而表达式(a<b)&&!||1为真,所以整个表达式的值为真。选项C中,a&&b的结果为真。在选项D中,a||(b+b)&&(C- a)的结果为真。

  • 第22题:

    下列程序的运行结果是______。include int Func(int *a,int n) {int s=1; for(int i=0

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

    include<iomanip.h>

    int Func(int *a,int n)

    {int s=1;

    for(int i=0;i<n;i++)

    s*=*a++;

    returns;}

    void main()

    {inta[]:{1,2,3,4,5,6,7,8};

    intb=Func(a,6)+Func(&a[5],2);

    cout<<“b=“<(b<<endl;}


    正确答案:b=762。
    b=762。 解析: 本题考查了。a++的用法。*a++作为表达式时,先计算*a作为表达式的值,然后使指针变量 a本身增1,在本惠中,s*=*a++等同于3=s**a,a++,S后面第一个*是乘号。

  • 第23题:

    以下数组定义中错误的是()

    • A、int x[][3]={0};
    • B、int x[2][3]={{1,2},{3,4},{5,6}};
    • C、int x[][3]={{1,2,3},{4,5,6}};
    • D、int x[2][3]={1,2,3,4,5,6};

    正确答案:B

  • 第24题:

    合法的数组定义是()

    • A、int a[ ]="string";
    • B、int a[5]={0,1,2,3,4,5};
    • C、char s="string";
    • D、char a[ ]={0,1,2,3,4,5};

    正确答案:D