niusouti.com

有以下程序: 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数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B.由于p数组中没有字符串结束符,长度

题目
有以下程序: 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数组中没有字符串结束符,故字符串的长度不自绷定。
更多“有以下程序: #include <string.h> main() {char p[]={'a','b','c'},q[10]={'a','b',' ”相关问题
  • 第1题:

    有以下程序include main(){ char *p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf

    有以下程序 #include <stdlib.h> main() { char *p,*q; p=(char*)malloc(sizeof(char)*20); q=p; scanf("%s %s",p,q); printf("%s %s\n",p,q); } 若从键盘输入:abc def<回车>, 则输出结果是

    A.def def

    B.abc del

    C.abc d

    D.d d


    正确答案:A
    解析:本题考查的知识点是字符型指针变量、malloc()函数的使用。本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,clef.所以4个选项中A正确。

  • 第2题:

    有以下程序include.main(){char*p="abcde\ofghjik\0";printf("%d\n",strlen(p));} 程

    有以下程序 #include.<string.h> main() { char *p="abcde\ofghjik\0"; printf("%d\n",strlen(p)); } 程序运行后的输出结果是

    A.12

    B.15

    C.6

    D.5


    正确答案:D
    解析:本题首先定义了一个字符型指针变量p,并用一个宇符串给它赋值,然后调用printf()函数输出p所指向的字符串的长度。字符串的结束标记为“\0”,其长度为“\0”前的字符个数,故长度为5。所以4个选项中D正确。

  • 第3题:

    有以下程序:include include main(){char *p[10]={"abc","aabdfg","dcdbe"

    有以下程序: #include <stdio.h> #include <string.h> main() { char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"}; printf("%d\n",strlen(p[4])); } 执行后的输出结果是( )。

    A.2

    B.3

    C.4

    D.5


    正确答案:A
    解析:p是由10个指向字符型数据的指针元素组成的指针数组,其中前5个数组元素进行了初始化。p[4]="cd",strlen(str)是统计字符串str中字符的个数(不包括终止符'\0'),输出结果为2。

  • 第4题:

    有以下程序:includemain(){char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scan

    有以下程序: #include <stdlib.h> main() { char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q); printf("%s%s\n",p,q); } 若从键盘输入:abc def<回车>,则输出结果是( )。

    A.def def

    B.abc def

    C.abe d

    D.d d


    正确答案:A
    解析:本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,def所以4个选项中A正确。

  • 第5题:

    有以下程序: include main( ) { char *p ,* q; p=(char * )malloc(sizeof(char

    有以下程序: #include<stdlib.h> main( ) { char *p ,* q; p=(char * )malloc(sizeof(char) * 20);q=p; scanf("%s%s",p,q); printf("%s%s\n",p,q); } 若从键盘输入:abc def<回车>,则输出结果是

    A.def def

    B.abc def

    C.abc d

    D.d d


    正确答案:A

  • 第6题:

    21、以下程序执行后的结果为 。 #include "stdio.h" #include <string.h> void fun(char *s) { char a[10]; strcpy(a,"string"); s=a; } main() { char *p="gao"; fun(p); printf("%s\n",p); }

    A.gao

    B.结果不确定

    C.str

    D.string


    emoclew emoclew