niusouti.com

有以下程序 #include 〈string.h〉 main ( ) { char p[]={'a','b ,'c'}, q[10]={'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B.由于p数组中没有字符申结束符,长度不能确定;但q数组中字符串长度为3C.由于q数组中没有字符串结束符,长度不能确定:但p数组中字符串长度为3D.由于p和q数组中都没有字

题目

有以下程序 #include 〈string.h〉 main ( ) { char p[]={'a','b ,'c'}, q[10]={'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符申结束符,长度不能确定;但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定:但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定


相似考题
更多“有以下程序 #include 〈string.h〉 main ( ) { char p[]={'a','b ,'c'}, q[10]={'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B.由于p数组中没有字符申结束符,长度不能确定;但q数组中字符串长度为3C.由于q数组中没有字符串结束符,长度不能确定:但p数组中字符串长度为3D.由于p和q数组中都没有字”相关问题
  • 第1题:

    设有下列程序段: 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存放的是数组的首地址。

  • 第2题:

    有以下程序:includemain(){char p[20]={'a','b','c','d'),q[]="abc",r[]="abcde"strc

    有以下程序: #include<string.h> main() {char p[20]={'a','b','c','d'),q[]="abc",r[]="abcde" strcat(p,r);strcpy(p+strlen(q),q); printf("%d\n",sizeof(p)); } 程序运行后的输出结果是( )。

    A.9

    B.6

    C.11

    D.7


    正确答案:B
    解析:题目中首先通过strcat(p,r)函数将r所指字符串内容连接到p所指的字符串后面,p[20]={'a','b','c','d','a','b','c','d','e'},然后通过strcpy(p+strlen(q),q),首先在p[0]地址的基础上向后移动三位,然后将q所指字符串的内容复制到p所指的存储空间中,从字符d往后全部覆盖,p[20]={'a','b','c','a','b','c'}。在输出语句中strlen(p)是求字符串的长度。

  • 第3题:

    设有程序段:char s[]=china; char *p ; p=s ; 则下面叙述正确的是( ) 。

    A. s 和 p 完全相同

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

    C. s 数组长度和 p 所指向的字符串长度相等

    D. *p 与 s[0]相等


    正确答案:D

  • 第4题:

    设有以下定义和语句: 则以下叙述中正确的是( )。A.str数组长度和P所指向的字符串长度相等SXB

    设有以下定义和语句:则以下叙述中正确的是( )。

    A.str数组长度和P所指向的字符串长度相等

    B.*P与str[0]的值相等

    C.str与P的类型完全相同

    D.数组str中存放的内容和指针变量P中存放的内容相同


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

  • 第5题:

    有以下程序: include main() {char p[]={'a','b','c'},q[10]={'a','b','

    有以下程序: #include <string.h> main() {char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 以下叙述中正确的是 ______。

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

    C.由于q数组中没有字符串结束符,长度不能确定:但p数组中字符长度为3

    D.由于p和q数组中没有字符串结束符,故长度都不能确定


    正确答案:B
    解析:strlen是计算以“\0”结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括“\0”。题中“q[10]={'a','b','c'}”虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前3个存储弹元,其余存储单元系统自动加上“\0”故数组q的长度为3;由于p数组中没有字符串结束符,故字符串的长度不自绷定。

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

    有以下程序includemain(){char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%

    有以下程序 #include<string.h> main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:A
    解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

  • 第8题:

    以下函数实现的功能是void fun (char *s){ char *p,*q,temp; p=s; q=s+ strlen(s)-1; while (p<q) { temp=*p; *p=*q; *p=temp; p++; q--; }}

    A.将一个字符串首尾颠倒

    B.计算字符串的长度

    C.统计字符串中的空格个数

    D.将字符串中的小写字母变成大写字母


    正确答案:A
    解析:本题考核while循环语句和指针的使用。在该函数中,循环开始时,指针p指向字符串的第1个字符,指针q指向字符串的最后一个字符,首先交换这两个字符;然后,指针p前进一个字符位置(指向下一个字符),指针q后退一个字符位置(指向前一个字符);经过若干次循环,条件pq将为假(即指针p和指针q相遇),循环结束。从而实现了将一个字符串首尾颠倒的功能。

  • 第9题:

    有以下程序:以下叙述中正确的是( )。

    A.在给P和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于P数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3

    C.由于q数组中没有字符串结束符,长度不能确定;但P数组中字符长度为3

    D.由于P和q数组中没有字符串结束符,故长度都不能确定


    正确答案:B
    本题考查的是库函数的调用。Stden

  • 第10题:

    有以下程序:include main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d

    有以下程序: #include <string.h> main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d %d\n",strlen(p),strlen(q)); } 以下叙述中正确的是( )。

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:B
    解析:使用初始化列表对字符数组赋初值,系统不会自动为其添加字符串结束符,使用字符串初始化时才会自动添加,所以选项A是错的。数组长度在未指定的情况下由初始化列表项中数据的个数决定,若已指定且初始化项数不足时,多出部分会自动初始化为0,0等价于宁符串结束符'\0'。所以选项B是正确的,C和D都是错误的。本题应该选B。

  • 第11题:

    若有下面的程序段: chars[]="china";char *p;p=s;则下列叙述正确的是( )。

    A.s和p完全相同

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

    C.数组s的长度和p所指向的字符串长度相等

    D.*p与s[0]相等


    正确答案:D
    解析:字符型指针变量p中存放的是“china"的首地址,所以选项A)和B)错误;s数组长度为6,而p所指向的字符串长度为5,二者不相等,排除选项C)。

  • 第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[]="china"; char*p; p=s;

    则下列叙述正确的是

    A.s和p完全相同

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

    C.s数组长度和p所指向的字符串长度相等

    D.*p与s[0]相等


    正确答案:D
    解析:考查的是字符指针和字符数组的区别。选项A)中,s为数组名,是一个常量地址,而指针p为一个字符变量,不能说两者完全相同,所以选项A)错误。选项B)和C)的说法都不严谨,只有选项D)的说法正确。

  • 第14题:

    有以下程序

    #include<string.h>

    main()

    { char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};

    printf("%d%d\n",strlen(p),strlen(q));}

    以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:A
    解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

  • 第15题:

    设有以下定义和语句 char str[20]="Program",*p; p=str; 则以下叙述中正确的是______。

    A.*p与str[0]中的值相等

    B.sb与p的类型完全相同

    C.str数组长度和p所指向的字符串长度相等

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


    正确答案:A
    解析:选项A正确,原因是语句p=str表示指针变量p指向数组str[20]的首地址也就是str[0]。所以*p与str[0]中的值相等。

  • 第16题:

    设有以下定义和语句: char str[20]="Program", *P; p=str; 则以下叙述中正确的是( )。

    A.*p与str[0]中的值相等

    B.str与p的类型完全相同

    C.str数组的长度和p所指向的字符串长度相等

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


    正确答案:A
    解析:语句p=str表示指针变量p指向str数组的首地址,即&str[0],所以*p与str[0]中的值相等,选项A)正确。

  • 第17题:

    有以下程序includemain(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\

    有以下程序 #include<string.h> main() { charp[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是

    A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

    D.由于p和q数组中都没有字符串结束符,故长度都不能确定


    正确答案:A
    解析: 在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

  • 第18题:

    有以下程序includemain(){char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strc

    有以下程序 #include<string.h> main() {char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde"; strcat(p,r);strcpy(p+strlen(q),q); printf("%d\n",strlen(p)); } 程序运行后的输出结果是

    A.9

    B.6

    C.11

    D.7


    正确答案:B
    解析: strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时复制字符串结束标志 '\0'到P[6]中。函数strlen()返回的是字符串中不包括'\0'在内的实际长度,故本题答案为B)。

  • 第19题:

    设有以下定义和语句: char str[2O]="Program",*P: p=str: 则以下叙述中正确的是( )。

    A.*p与stf[0]的值相等

    B.str与P的类型完全相同

    C.str数组长度和P所指向的字符串长度相等

    D.数组str中存放的内容和指针变量P中存放的内容相同


    正确答案:A
    本题中的str为一个字符型数组,P为字符型指针变量,其指向str的首地址,*P的值为strE03中的字符,其类型、长度不同,但字符第一个相同,故答案选择A。

  • 第20题:

    设有以下定义和语句:

    则以下叙述中正确的是( )。

    A.*P与str[0]的值相等

    B.str与p的类型完全相同

    C.str数组长度和p所指向的字符串长度相等

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


    正确答案:A
    本题中的str为一个字符型数组,P为字符型指针变量,其指向str的首地址,*P的值为str[0]中的字符,其类型、长度不同,但字符第一个相同,故答案选择A。

  • 第21题:

    下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。

    例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。

    请改正程序中的错误,使它能得到正确结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <stdio.h>

    include <strinq.h>

    void fun(char *p,char *q,char *c)

    {int k=0;

    while(*p || *q)

    /**********found**************/

    { if (*p<=*q)

    c[k]=*q;

    else c[k]:*p;

    if(*p) p++;

    if(*q)q++;

    /**+**********found**************/

    k++

    }

    }

    main()

    {char a[10]="fshADfg",b[10]="sdAEdi",

    c[80]={'\0');

    fun(a,b,c);

    printf("The string a:");puts(a);

    printf("The string b:");puts(b);

    printf("The result:");puts(c);

    }


    正确答案:(1)错误:{if(*P=*q) 正确:{if(*p>=*q) (2)错误:k++ 正确:k++;
    (1)错误:{if(*P=*q) 正确:{if(*p>=*q) (2)错误:k++ 正确:k++; 解析:错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为“>=”。错误2:C语言规定,每个语句要用分号结束。

  • 第22题:

    有以下程序: include include main( ) {char p[] = {'a','b','c'] ,q[10

    有以下程序: #include <stdio.h> #include <string.h> main( ) { char p[] = {'a','b','c'] ,q[10] = {'a','h','c'} prinff( "% d % d\n" , strlen (p) , strlen (q) );以下叙述中正确的是( )。

    A.在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3

    B.由于P数组中没有字符串结束符,长度不能确定;q数组中字符串长度为3

    C.由于q数组中没有字符串结束符,长度不能确定;p数组中字符长度为3

    D.由于p和q数组中没有字符串结束符,故长度都不能确定


    正确答案:B
    解析:strlen函数用于计算以,'\0'结束的字符串的长度,函数值为字符串的实际长度,长度中不包括,'\0'。q数组定义的数组大小为10,而初始化时字符串只占用了前3个存储单元,其余存储单元系统自动加'\0',故数组q的长度为3;而p数组定义时没有指定大小,其大小根据初始化所赋值确定为3,没有字符串结束符,故字符串的长度不能确定。

  • 第23题:

    单选题
    有以下函数:void fun(char*p,char*q){ while((*p++=*q++)!='\0');}该函数的功能是(  )。
    A

    计算字符串的长度

    B

    计算字符串所占字节数

    C

    将字符串逆序存放

    D

    实现字符串的复制


    正确答案: C
    解析:
    while循环语句中,实现功能是把q指针指向地址单元的值赋给p指针指向的地址中,且每次完成赋值后,移动指针,进行下一次赋值,直到q指针指向字符串结束符时,退出while循环,功能为把q指向的字符串复制到p指向的地址中。答案选择D选项。