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

题目

有以下程序

#include <string.h>

main( )

{ char p[20]={'a','b','c','d'},q[]="abc", r[]="abcde";

strcpy(p+strlen(q),r); strcat(p,q);

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

}

程序运行后的输出结果是

A)20 9

B)9 9

C)20 11

D)11 11


相似考题
参考答案和解析
正确答案:C

更多“有以下程序#include &lt;string.h&gt;main( ){ char p[20]={'a','b','c','d'},q[]="abc", r ”相关问题
  • 第1题:

    有以下程序includemain(){ 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 def

    C.abc 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。

  • 第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",strlen(p)); } 程序运行后的输出结果是

    A.9

    B.6

    C.11

    D.7


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

  • 第3题:

    有以下程序: 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

  • 第4题:

    有以下程序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正确。

  • 第5题:

    有以下程序: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正确。

  • 第6题:

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

    有以下程序: #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
    解析:本题首先定义了3个字符数组p、q、r并分别被初始化。数组p指定的大小为20,初始化列表为{'a','b','c','d'},即只指定了前4个元素的内容,根据C语言的规定,初始化列表不足时,其余元素均自动初始化为0。然后通过strcat()函数,将字符串,连接到字符串p之后,即执行后p中的内容为"abcdabcde"。因为“strlen(q)”表示求字符串q的长度,很明显为3,所以语句“strcpy(p+strlen(q),q);”的作用就是:将字符串q拷贝到数组p的第3个元素位置处。注意,strcpy函数拷贝字符串会将其结束标志位一起拷贝,故拷贝完后p中的内容为”ababc\0de",但通过strlen函数取p的长度碰到'\0\即停止,故p中字符串的长度是6,应该选择B。