更多“设有定义语句“char s[]="123";”,则表达式“s[3]”的值是 ( )A.’1’B.’3’C.0D.语法出错 ”相关问题
  • 第1题:

    若S是int型变量,且s=8,则s%3 (s 1)%3表达式的值为________。


    正确答案:
    2【解析】考查基本表达式的计算,“%”运算符的功能是取余。题中条件s=8,则s%3=2,(s 1)%3=9%3=0,所以表达式s%3 (s 1)%3=2 0=2。

  • 第2题:

    设有以下语句: typedef struct S { int g; char h; } T; 则下面叙述中正确的是( )。

    A.可以用S定义结构体变量

    B.可以用T定义结构体变量

    C.S是struct类型的变量

    D.T是stnictS类型的变量


    正确答案:B
    解析:本题使用typedef关键字将整个结构体的定义部分stmctS{intg;charh;}声明为别名T。此时T是一个结构体类型,可以直接使用T声明该结构体变量,而S只是一个结构体名,必须结合struct关键字才能声明变量。故本题的正确答案为B。

  • 第3题:

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

  • 第4题:

    若有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

  • 第5题:

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

    A.p=S;

    B.p=k;

    C.p=s[0];

    D.k=S;


    正确答案:C

  • 第6题:

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

    A.p=s;

    B.p=k

    C.p=s[0]

    D.k=s;


    正确答案:C

  • 第7题:

    若有如下定义: int s[3][4]; 则下面表达式中能代表数组元素s[1][0]的值的是( )

    A.*(s+1)

    B.s[1]

    C.s+1

    D.*(s[1])


    正确答案:D

  • 第8题:

    设有定义语句“int a[]={2, 4,6,8,10},*p=s;”,则值为8的表达式是( )

    A.*p+3

    B.*p+4

    C.*(p+4)

    D.*(s+3)


    正确答案:D
    分析四个备选答案,可以看出是用指针法来引用数组a的元素。当指针变量p已经指向数组。的首地址后(正如本题那样),*(p+i)和*(s+i)都是数组元素a[i]。对于备选答案A:*p就是数组元素。a[0],其值为2,再加3结果为5,不符合题意。同样道理,备选答案B中的*p十4的值为6,也不符合题意。对于备选答案C:*(p+4)代表数组元素a[4],其值为10,也不符合题意。显然本题答案应选D。因为*(s+3)就是数组元素s[3],其值为8。

  • 第9题:

    设有如下变量char c = 'c';int i = 10;double d = 10;long l = 1;String s = "Hello";以下哪些语句编译不出错?

    A.c=c+i;

    B. s+=i;

    C. i+=s;

    D. c+=s;


    正确答案:B

  • 第10题:

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

    A)p=s;

    B)p=k;

    C)p=s[0];

    D)k=s;


    正确答案:C

  • 第11题:

    单选题
    若有以下定义和语句:char s1[10]=abcd!, *s2=n123\\;printf(%d%d, strlen(s1), strlen(s2));则输出结果是(  )。
    A

    55

    B

    105

    C

    107

    D

    58


    正确答案: C
    解析:
    strlen函数是计算字符串长度的函数,求字符串的实际字符个数,不包括字符'\0'在内,在字符'\0'之后的所有字符均不计入长度中。所以strlen(s1)=5。而以"\"开头的字符序列是转义字符,"\\"的含义是一个字符'\',所以s2所指向的内容实际上是"n123\",所以strlen(s2)=5。答案选择A选项。

  • 第12题:

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

    7

    B

    8

    C

    9

    D

    10


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

  • 第13题:

    程序中若有如下说明和定义语句

    Char fun(char *);

    main()

    {

    char *s="one", a[5]={0}.(*f1)()=fun, ch;

    }

    以下选项中对函数fun的正确调用语句是

    A.(*f1)(A) ;

    B.*fl(*s);

    C.fun(&A) ;

    D.ch=*fl(s);


    正确答案:A
    解析:在C语言中函数名代表该函数的入口地址,因此可以定义一种指向函数的指针来存放这种地址.其定义形式为:函数类型(*函数指针名)(函数参数列表);其中,函数参数列表可以省略。通过函数指针调用函数的形式为:(*函数指针)(函数参数列表)调用时函数的参数列表是不能省略的。所以本题的正确答案为选项A。

  • 第14题:

    下列对字符数组进行初始化的语句中,______ 是正确的。

    A.char s 1[]=“abcd”;

    B.char s2[3]=”xyz”;

    C.char s 3[][3]={‘a’,‘x’,‘y’}

    D.char s3[][3]={“xyz”,“mnp”};


    正确答案:A
    解析:BCD选项都不合字符数组的定义。

  • 第15题:

    设有如下函数定义。若在主函数中用语句cout<<f("good")调用上述函数,则输出结果为(48)。 int f(char *s){ char *p=s; while(*p! ='\0')p++; return(p-s); }

    A.3

    B.4

    C.5

    D.6


    正确答案:B
    解析:程序中的while循环执行完以后,s指向字符中的第一个元素,p指向'\0'(字符串的末尾位置),所以p-s是字符申的长度。所以选择B。

  • 第16题:

    若有以下定义和语句

    char s1[10]=”aBcd!”,*s2=”\n123\\”

    printF(“%d%d\n”,strlen(sl),strlen(s2));

    则输出结果是

    A.5 5

    B.10 5

    C.10 7

    D.5 8


    正确答案:A
    解析:计算字符串长度是从第一个字符开始到'\0'前的一个字符结束。第一个字符串长度为5,分别为'a'、'b'、'c'、'd'、'!'第二个字符串的长度也为5,分别为'\n','1','2','3','\\',其中'\n'和'\\'均表示一个字符。

  • 第17题:

    若有以下的说明语句,则与它等价的说明是char s[3][5]={"aaaa","bbbb","cccc"};

    A.char**s1={"aaaa","bbbb","cccc"};

    B.char*s2[3]={"aaaa","bbbb","cccc"};

    C.char s3[][5]={"aaaa","bbbb","cccc"};

    D.char s4[][4]={"aaaa","bbbb","cccc"};


    正确答案:C
    解析:本题中的s数组是一个二维字符数组,选项A)是一个双重指针,但字符串的长度没有限制;选项B)是一个元素为字符指针的数组,同样的也是字符串的长度没有限制;选项D)中,每个字符串的长度限制为4,不正确。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。

  • 第18题:

    设有以下C语言说明语句。 struct { int x,y;} s[2]={{1,2),{3,4}),*p=s,*q=s; 则表达式++p->x和表达式(++q)->x的值分别为(34)。

    A.1、1

    B.1、3

    C.2、3

    D.3、3


    正确答案:C
    解析:表达式++p->x中->(指向运算符)优先级高于++(自增运算符),所以先求出p->x中的值1。由于结构体数组元素(或结构体变量)中的成员是有存储单元的,可以像普通变量一样使用,因此++运算是针对s[0].x成员的,即该成员中的值自增后由1变为2。对于表达式(++q)->x,则是q先自增,q指向s[1],输出s[1].x成员中的值3。

  • 第19题:

    设有定义语句“int a=10,*p=&a;”,则表达式“a十*p”的值是( )

    A.10

    B.20

    C.100

    D.语法出错


    正确答案:B
    在数据定义语句中的“*p=&a”,表示指针变量p已经指向变量a,所以表达式中的“*p”就是变量a,“a+*p”就是“a+a”,所以该表达式的值为20。本题答案应选B。

  • 第20题:

    设有以下语句 typedef struct s {int g;char h;}T 则下面叙述中正确的是

    A.可用S定义结构体变量

    B.可以用T定义结构体变量

    C.S是struct类型的变量

    D.T是structS类型的变量


    正确答案:B
    解析:结构体类型的定义格式为
      struct 结构体名
     {成员说明列表};
      结构体变量的定义有3种形式:第一种:定义结构体类型的同时定义结构体变量如: street结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:struct student{成员说明列表};student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:struct student{成员说明列表}变量。

  • 第21题:

    ( 31 )若有以下定义和语句

    char s1[10]= " abcd! " ,*s2= " \n123\\ ";

    printf ( " %d %d\n ", strlen ( s1 ) ,strlen ( s2 ) ) ;

    则输出结果是

    A ) 5 5

    B ) 10 5

    C ) 10 7

    D ) 5 8


    正确答案:A

     

  • 第22题:

    执行下列语句后,*(p+1)的值是().  char  s[3]="ab",*p;  p=s;


    正确答案:b

  • 第23题:

    单选题
    若有定义语句: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选项。