更多“若已定义char s[10];,则下面表达式中能表示s[1]的地址的是()。”相关问题
  • 第1题:

    若有定义:char *x="abcdefghi";,以下选项中正确运用了strcpy函数的是______。

    A.char y[10]; strcpy(y,x[4]);

    B.char y[10]; strcpy(++y,&x[1]);

    C.char y[10],*s; strcpy(s=y+5,x);

    D.char y[10],*s; strcpy(s=y+1,x+1);


    正确答案:D
    解析:选项A中x[4]是取字符e,也就是将字符复制到y中,strcpy实现的是地址的复制所以选项A错误;选项B中++y是错误的,不允许对常量进行自加运算(y是—个确定的地址值),所以选项B错误;选项C指针变量s指向了y向后的第5位,则存放x时会出现越界问题,所以选项C错误;选项D中,指针变量s指向了y向后的第—位,此时s可存放数据的长度为9,而地址“x+1”起的字符串的地址长度也刚好为9(包括“\0”),所以开始复制不会出现地址越界问题,故选项D正确。

  • 第2题:

    下面能正确进行字符串赋值操作的是

    A.char s[5]={"ABCDE"};

    B.char s[5]={′A′,′B′,′C′,′D′,′E′};

    C.char *s; s="ABCDE";

    D.char *s;scanf("%s",s);


    正确答案:C
    解析:考查了一维字符数组的定义和初始化。选项A)和B)定义的数组空间太小,至少应该为6个字符的长度才可以。选项D)中的指针s未赋初值,所以指向一个不确定的地址,因而不能用scanf输入数据到这一指针所指向的地址中。

  • 第3题:

    若已包括头文件且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串 "ABCDE"赋给

    若已包括头文件<string.h>且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串 "ABCDE"赋给s1,下列语句错误的是( )

    A.strcpy(s1,s2)

    B.strcpy(s1,"ABCDE");

    C.s1="ABCDE";

    D.for(i=0;i<6;i++) s1[i]=s2[i];


    正确答案:C
    解析:数组名s1是代表s1数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量, 因此 sl="ABCDE"的方法是错误的。

  • 第4题:

    已知如下定义: String s = "story"; 下面哪些表达式是合法的?()

    A.s += "books";

    B.char c = s[1];

    C.int len = s.length;

    D.String t = s.toLowerCase();


    正确答案:AD

  • 第5题:

    对于下面的程序includeincludechar *scmp(char*s1,char*s2){if(strcmp(s1,

    对于下面的程序 #include<stdio.h> #include<string.h> char *scmp(char*s1,char*s2) { if(strcmp(s1,s2)<0)return(s1); else return(s2); } main() { int i:char string[20],sb[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[21)); printf("%s\n",string); } 若运行时依次输入abcd、abba和abc三个字符串,则输出结果为______。

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B
    解析:本题自定义函数scrnp()的作用是比较字符串s1和s2的大小,如果s1s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abcd、abba和abc三个字符串,执打strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(string,str[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

  • 第6题:

    下面各语句行中,能正确地给字符串赋值的语句行是( )。

    A.char st[4]={"ABCDE"};

    B.char s[5]={'A','B','C','D','E'};

    C.char *s="ABCDE";

    D.char *s; scanf("%s",*s);


    正确答案:C
    解析:选项A)字符串的赋值产生越界错误,不正确;选项B)是字符数组的赋值,而不是字符串的赋值;选项D)中scanf的列表项必须为变量的地址。

  • 第7题:

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

  • 第8题:

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

    A.&s[1]

    B.&s[0]+1

    C.s+1

    D.s++


    正确答案:D

  • 第9题:

    下面能正确进行字符串赋值操作的语句是______。

    A.char s[5]={"ABCDE"};

    B.char s[5] ={'a','b','c','d','e'};

    C.char *s;s="ABCDEF"

    D.char *s;scanf("%s",s);


    正确答案:C

  • 第10题:

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

    A.*(s+1)

    B.s[1]

    C.s+1

    D.*(s[1])


    正确答案:D

  • 第11题:

    若有定义char s[10];则在下面表达式中不表示s[1]的地址的是()

    • A、s+1
    • B、s++
    • C、&s[0]+1
    • D、&s[1]

    正确答案:B

  • 第12题:

    若s是int型变量,且s=6,则下面表达式的值是() s%2+(s+1)%2


    正确答案:1

  • 第13题:

    若已包括头文件且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串“ABCDE”赋给s

    若已包括头文件<string.h>且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串“ABCDE”赋给s1,下列语句错误的是( )。

    A.strcpy(s1,s2)

    B.strcpy(sl,"ABCDE");

    C.s1="ABCDE";

    D.for(i=0;i<6;i++) s1[i]=s2[i];


    正确答案:C
    解析:数组名s1是代表s1数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量,因此s1=“ABCDE”的方法是错误的。

  • 第14题:

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

    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!";”是定义指针同时赋初值,因此是正确的。

  • 第15题:

    若给fun函数的形参s传送字符串:"]]6354abcc" (其中]表示空格字符),则函数的返回值是【19】。

    #include <ctype.h>

    long fun(char s[])

    {long n;int sign;

    for(;isspace(*s);s++);

    sign=(*s==′-′)?-1:1;

    if(*s==′+′||*s==′-′)s++;

    for(n=0;isdigit(*s);s++)n=10*n+(*s-′0′);

    return sign*n;

    }


    正确答案:
    6354

  • 第16题:

    下面能正确进行字符串赋值操作的是

    A.char s[5]={"ABCDE"};

    B.char s[5]={'A','B','C','D','E'};

    C.char*s;s="ABCDE";

    D.char*s;char a;scanf("%s",&s);


    正确答案:C
    解析:如果一个字符数组用来存储字符串,那么在定义该字符数组时,数组的大小应该比它将要实际存放的字符串长度大1,所以选项A)和B)错。选项D)e本身就是一个字符指针,不需再取地址。

  • 第17题:

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

  • 第18题:

    以下选项中,能定义s为合法的结构体变量的是( )。

    A.typedef struct abc { double a; char b[10]; } s;

    B.struct { double a; char b[10]; }s;

    C.struct ABC { double a; char b[10]; } ABC s;

    D.typedef ABC { double a; char b[10]; } ABC s;


    正确答案:B
    解析:定义一个结构体类型的变量,可采用三种方法:①先定义结构体类型,再定义变量名。②在定义类型的同时定义变量。③直接定义结构体类型变量,即不出现结构体名。选项B)符合第三种定义方法。

  • 第19题:

    若已包括头文件,运行下列程序段时输出结果是()。int i=0;char s1[10]="ABCD

    若已包括头文件<stdio.h>和<string.h>,运行下列程序段时输出结果是( )。 int i=0; char s1[10]="ABCD",s2[10]="EFG"; strcat(s1,S2); while(s2[i++]!='\0') s2[i]=s1[i]; puts(s2);

    A.ABC

    B.ABCDEF

    C.EBCDEFG

    D.CBD


    正确答案:C
    解析: strcat(s1,s2)把s2连接到s1的后面,s1=ABCDEFG,执行while(s2[i++]!='\0')后i的值变为1,往后执行s2[i]=s1[i]时是从把s1的第二位给s2的第二位开始,把s1赋给s2。

  • 第20题:

    以下选项中,能定义s为合法的结构件变量的是_______。

    A.typedef struct abc { double a; char b[10]; }s;

    B.struct { double a; char b[10]; }s

    C.struct ABC { double a; char b[10]; } ABCs;

    D.typedef ABC { double a; char b[10]; } ABCs;


    正确答案:B
    解析:定义一个结构体类型的变量,可采用三种方法:①先定义结构体类型,再定义变量名;②在定义类型的同时定义变量;③直接定义结构类型变量,即不出现结构体名;选项B符合第三种定义方法。

  • 第21题:

    设下面程序段中调用fun函数传送实参a和b, main() { chara[10],b[10] ┇ fun(a,b); ┇ } 则在fun函数首部中,对形参错误的定义是( )

    A.fun(char a[10],b[10]){…}

    B.fun(char a1[],char a2[]){…}

    C.fun(char p[10],char q[10]){…}

    D.fun(char*s1,char*s2){…}


    正确答案:A

  • 第22题:

    设有定义语句“char s[]="123";”,则表达式“s[3]”的值是 ( )

    A.’1’

    B.’3’

    C.0

    D.语法出错


    正确答案:C
    字符数组s在定义时省略了数组长度,表示给每个数组元素均赋了初值。对本题来说,数组的长度为4;数组元素的值依次为:S[0]为'1'。S[1」为'2'。S[2]为'3'、S[3]为字符率结束标记符'\0',所以“s[3]”的值是'\0'。注意,这个字符的ASCII代码值是整数0,所以本题答案应选C。

  • 第23题:

    若已定义chars[10];则在下面表达式中不表示s[1]地址的是()

    • A、s+1
    • B、s++
    • C、&s[0]+1
    • D、&s[1]

    正确答案:B

  • 第24题:

    单选题
    如果定义有short,s;byte,b;char,c,则表达式s*b+c的类型为()
    A

    char

    B

    short

    C

    int

    D

    byte


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