更多“若有定义语句:“char S[3][10],(*k)[3],*p;”,则以下赋值语句正确的是( )。 A.p=S;B.p=k; ”相关问题
  • 第1题:

    若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是______。

    A.pk=k;

    B.pk[0]=&k[1][2];

    C.pk=k[0];

    D.pk[1]=k;


    正确答案:B
    解析:*pk[3]:由于[]比 * 优先级高,因此p先与[3]结合,形成p[3]数组,有3个元素。然后再与p前面的“*”结合,“*”表示此数组是指针类型的,每个数组元素(相当于—个指针变量)都可以指向—个整型变量。

  • 第2题:

    以下语句或语句组中,能正确进行字符串赋值的是( )。

    A.char*sp;*sp="right!";

    B.char s[10];s="right!";

    C.char s[10];*s="right!";

    D.char*sp="right!";


    正确答案:D
    解析:本题的考点是C语言的数组和指针。C的数组名是一个特殊类型的指针,固定指向数组第一个元素的位置,运行过程中不能再改变其指向。因此选项B、C都是错误的。指针可以指向任何单元,但选项A是错误的,因为赋值语句“*sp=”right!”;”是错误的,正确写法是“sp=”right!”;”。而对于选项D,由于“char*sp="right!";”是定义指针同时赋初值,因此是正确的。

  • 第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 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 u[4][10],*P,*q[4];且0≤i<4,则错误的赋值是

    A.p=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    解析:直接将二维数组a赋给p不合法,两者类型不匹配。

  • 第6题:

    若有定义语句:char s[10]="1234567\0\0";,则strlen(s)的值是______。

    A.7

    B.8

    C.9

    D.10


    正确答案:A
    解析:strlen(字符数组)是测试字符串的长度的函数。函数的值为字符串的实际长度,不包括'\0'在内。 C语言中字符串是以'\0'字符结束的,且salen()函数计算的是'\0'字符前的所有字符的个数,所以本题strlen(s)的值是7。需要与其区分的是sizeof()函数,它的功能是计算变量或数组所分配到的内存空间的大小。如果本题要求计算sizeof(s)的话,则其值应为10。

  • 第7题:

    若有定义语句: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]。

  • 第8题:

    若有定义语句:char s[3][10],(*k)[3]。*P;,则以下赋值语句正确的是

    A.p=S;

    B.p=k;

    C.p=s[0];

    D.k=S;


    正确答案:C

  • 第9题:

    若有定义语句:“char sE10]="1234567\0\0";”,则strlen(s)的值是( )。

    A.7

    B.8

    C.9

    D.10


    正确答案:A
    "\0"表示空字符,strlen函数求得的是不包括字符串结束符\0的长度。故选A。

  • 第10题:

    若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是;

    A.p=s;

    B.p=k

    C.p=s[0]

    D.k=s;


    正确答案:C

  • 第11题:

    以下能正确进行字符串赋值或赋初值的语句组是()

    • A、charstr[3]="key";
    • B、charstr[3]={’k’,’e’,’y’};
    • C、charstr[4];str="key";
    • D、char*s;s="key";

    正确答案:D

  • 第12题:

    单选题
    若有定义语句:char s[3][10],(*k)[3],*p; 则以下赋值语句正确的是(  )。
    A

    p=s;

    B

    p=k;

    C

    p=s[0];

    D

    k=s;


    正确答案: C
    解析:
    A项,将字符型二维数组首地址赋值给了一个字符型指针,类型不匹配;B项,将指针数组的首地址赋值给一个字符型指针,类型不匹配;C项,s是二维字符数组,s[0]表示一个含有10个元素的一维数组,即将一维字符数组首地址赋值给了一个字符型指针,这是允许的;D项,将二维字符数组赋值给了指向一维字符数组的指针,类型不匹配。答案选择C选项。

  • 第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[4][10],* P,* q[4];且0<=i<4,则错误的赋值是( )。

    A.P=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而P为指向int类型的指针。所以选项A)是将一个指向int类型的指针用来指向一个指针的指针,显然是错误的。其他几个选项都是正确的赋值,其中选项D)是用&返回整数的地址,然后赋值给P。

  • 第15题:

    若有char a[5],*pa;则下面的选项中正确的赋值语句是()。

    A.p“abcd”

    B.a“abcd”

    C.*p“abcd”

    D.*a“abcd”


    正确答案:A

  • 第16题:

    以下语句或语句组中能正确进行字符串赋值的是( )。

    A.ehar以*sp; * sp = "right!";

    B.char s[10] ;s = "right!";

    C.char s [10]; * s = "right !";

    D.char * sp = "right !";


    正确答案:D
    解析:选项A)应将*sp="right!";中的*叩改为sP,即把字符串"right!”的首地址赋给指针变量sp;选项B)中的s代表数组的首地址,不能给它赋字符串,只能在定义数组时,对其进行初始化;选项C)中的。s指的是数组的第一个元素,不能给它赋字符串。

  • 第17题:

    若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为 int s[2][3]={0},( *p)[3]; p=s;

    A.*(*(p+i)+j)

    B.*(p[i]+j)

    C.(p+i)+j

    D.(*(p+i))[j]


    正确答案:A
    解析:p+i是数组s的第i+1行的首地址,而*(p+i)则是数组第i+1行第1列的元素的地址,*(p+i)+j则是第i+1行的第j+1列的地址,*(*(p+i)+j)引用的是数组元素s[i][j]的值。注意:通过建立一个指针数组来引用二维数组元素。

  • 第18题:

    若有char s[3][3]=={"AAA","BBB","CCC"};说明语句,则与它等价的语句是( )。

    A.char**s={"AAA","BBB","CCC"};

    B.char*s[3]={"AAA","BBB","CCC"};

    C.char s[][5]={"AAA","BBB","CCC"};

    D.char s[][3]={"AAA","BBB","CCC"};


    正确答案:D

  • 第19题:

    若有如下定义和语句: 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]。

  • 第20题:

    若有定义和语句 ( ) char s[10];s="abcd";printf("%s\n",s); 则结果是(以下μ代表空格)

    A.输出abcd

    B.输出a

    C.abcdμμμμμ

    D.编译不通过


    正确答案:D

  • 第21题:

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

    A.p:a;

    B.p[0]=a;

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

    D.1a[1]=&a;


    正确答案:C
    A选项错误,因为P是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为P[0]是一个int指针,也就是int-;而a是一个指向指针的指针in‘}}。c选项正确,因为p[O]是一个int},a[1][2]是int,&a[1][2]是int+,类型吻合。D选项错误,因为a作为数组名,不能取地址。即使能取,P[1]是int·,&a是int+t;,类型不对。因此C选项正确。

  • 第22题:

    (28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是

    A)p=s;

    B)p=k;

    C)p=s[0];

    D)k=s;


    正确答案:C

  • 第23题:

    若有定义和语句: char s[10]:s=""abcd"";printf(""%s/n"",s); 则结果是(以下u代表空格)()

    • A、输出abcd
    • B、输出a
    • C、输出abcduuuuu
    • D、编译不通过

    正确答案:D

  • 第24题:

    单选题
    若有定义语句char s[10]=1234567\0\0,则strlen(s)的值是(  )。
    A

    7

    B

    8

    C

    9

    D

    10


    正确答案: B
    解析:
    C语言规定以字符’\0’作为字符串结束的标识符。strlen函数返回的是字符串的长度,不包含字符’\0’,所以值是7。答案选择A选项。