更多“单选题有以下说明语句:char *s = "\"Name\\Address";指针s所指字符串的长度是( )。A 17B 15C 14D 说明语句不合法”相关问题
  • 第1题:

    有以下函数 int fun(char *s) { char *t=s; while(*t++); return(t-s); } 该函数的功能是

    A.比较两个字符串的大小

    B.计算s所指字符串占用内存字节的个数

    C.计算s所指字符串的长度

    D.将s所指字符串复制到字符串t中


    正确答案:B
    解析:循环语句while(*t++);执行完时,指针变量t就指向了字符中结束符‘\o’之后的位置,所以语句return(t-s);返回的就是字符串s所用内存的字节个数。

  • 第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题:

    下面各语句中,能正确进行赋字符串操作的语句是

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

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

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

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


    正确答案:C

  • 第4题:

    有以下程序中若有如下说明和定义语句; char fun(char*); main() { char * s="one",a[5]={0},(*f1)()=fun,ch; … } 以下选项中对函数fun的正确调用语句是 ______。

    A.(*f1)(a);

    B.*f1(*s);

    C.fun(&a);

    D.ch=*f1(s);


    正确答案:A
    解析:(*f1)()=fun可以理解为将fun函数的函数名称用(*f1)()来代替了,因此高调用fun时就可以用(*f1)()来代替,因此只有A是正确的。

  • 第5题:

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

    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指的是数组的第一个元素,不能给它赋字符串。

  • 第6题:

    设有如下程序段:则执行P=s;语句后,以下叙述中正确的是( )。

    A.可以用* P表示s[O]

    B.S数组中元素的个数和P所指字符串长度相等

    C.s和P都是指针变量

    D.数组s中的内容和指针变量P中的内容相等


    正确答案:A
    P=8;后,指针P指向s的首地址,*P=s[0],因此选项A)是正确的;p是字符串指针,所指向的字符串为”beijing”,其长度为7,而数组s中元素的个数为20,因此选项B)和D)是错误的;s是数组,不是指针变量,所以选项C)也是错误的。

  • 第7题:

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

  • 第8题:

    若有以下的说明语句,则与它等价的说明是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,不正确。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。

  • 第9题:

    以下能将字符串,you are luck!正确读入的语句组是( )

    A.char s[80]; scanf("%s",s);

    B.char *s: scanf("%s",s);

    C.char s[80]; gets(s);

    D.char *s; gets(3);


    正确答案:C

  • 第10题:

    若有变量说明:chars,s1[20];执行语句:s="student";s1=s;正确的叙述是:()。

    • A、二个语句都不正确
    • B、s所指向的字符串和s1的值都是"student"
    • C、第一个语句正确,而第二个语句不正确
    • D、第二个语句正确,而第一个语句不正确

    正确答案: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题:

    单选题
    设有如下程序段:char s[20]= Bejing,*p;p=s:则执行p=s;语句后,以下叙述正确的是(  )。
    A

    可以用*p表示s[0]

    B

    s数组中元素的个数和p所指字符串长度相等

    C

    s和p都是指针变量

    D

    数组s中的内容和指针变量p中的内容相等


    正确答案: A
    解析:
    A项正确,p=s;后,指针p指向s的首地址,*p=s[0];B项错误,p是字符串指针所指向的字符串为"Bejing",其长度为7,而数组a中元素的个数为20;C项错误,s为字符数组名;D项,数组s中有20个元素,其中s[6]~s[19]都为0,p中只有7个元素。答案选择A选项。

  • 第13题:

    设有下列程序段: char s[20]="Beijing",*p; p=s; 则执行p=s;语句后,下列叙述正确的是( )。

    A.可以用*p表示s[0]

    B.s数组中元素的个数和p所指字符串长度相等

    C.s和p都是指针变量

    D.数组s中的内容和指针变量p中的内容相同


    正确答案:A
    解析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s[0];s数组中元素的个数和 p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志“\0”,而p所指字符串长度不包括“\0”;s是字符型数组,p是指针变量;数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址。

  • 第14题:

    若有以下说明语句,则该语句()。chars=92;

    A、使s的值包含1个字符

    B、说明不合法,s的值不确定

    C、使s的值包含4个字符

    D、使s的值包含3个字符


    参考答案:B

  • 第15题:

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

    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。

  • 第16题:

    有下列函数: int fun(char*s) {char*t=s; while(*t++); return(t-s); } 该函数的功能是( )。

    A.比较两个字符串的大小

    B.计算s所指字符串占用内存字节的个数

    C.计算s所指字符串的长度

    D.将s所指字符串复制到字符串t中


    正确答案:C
    解析: 在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。

  • 第17题:

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

    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的列表项必须为变量的地址。

  • 第18题:

    若要说明一个类型名STP,使得定义语句STP s;等价于Char*s;,以下选项中正确的是( )。

    A.typedef Char*s;

    B.typedef Char*STP;

    C.typedef STP*Char;

    D.typedef*Char STP;


    正确答案:B
    用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

  • 第19题:

    有以下函数: int fun(char * s) {char * t=s; while(*t++); return(t-s) 该函数的功能是______。

    A.比较两个字符串的大小

    B.计算s所指字符串占用内存字节个数

    C.计算s所指字符串的长度

    D.将s所指字符串复制到字符串t中


    正确答案:C
    解析: 定义一个字符指针t,并将字符指针s的首地址赋给字符指针t;通过while语句将指针t往下移到字符串最后一个字符后面的地址,指针s始终指向首地址,将末地址减去首地址可以计算出字符串的长度。

  • 第20题:

    以下能正确进行字符串赋值、赋初值的语句是______。

    A.char s[5]:{'a','e','i','o','u'};

    B.char *s; s="good";

    C.char s[5]="good";

    D.char s[5]; s="good";


    正确答案:C

  • 第21题:

    语句()能正确完成赋字符串的功能。

    • A、chars[4];s[0]=“string”
    • B、char*s;get(s)
    • C、char*s[]=“string”
    • D、char*s;strcpy(s,“string”)

    正确答案:C

  • 第22题:

    单选题
    有以下函数 int fun(char *s) {  char *t=s;  while(*t++);  return(t-s); } 该函数的功能是(  )。
    A

    计算s所指字符串占用内存字节的个数

    B

    比较两个字符串的大小

    C

    计算s所指字符串的长度

    D

    将s所指字符串复制到字符串t中


    正确答案: A
    解析:
    本题中,首先让t指向形参s,然后通过一个循环体为空的while循环,将t逐次后移,直到其所指内容为'\0'(字符串结束标志)。此时t仍然会被增1,所以从循环出来,t指向的是s所指字符串的结束标志的后一个字节。因此,返回的t-s是s所指字符串占用内存字节的个数,A项正确。而C项所说的长度并不包括字符串结束标志位,错误。答案选择A选项。

  • 第23题:

    单选题
    标准函数fgets(s,n,f)的功能是()
    A

    从文件f中读取长度为n的字符串存人指针s所指的内存

    B

    从文件f中读取长度不超过n-1的字符串存人指针s所指的内存

    C

    从文件f中读取n个字符串存人指针s所指的内存

    D

    从文件f中读取长度为n-1的字符串存入指针s所指的内存


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