请教C语言的一道题~

来源:百度知道 编辑:UC知道 时间:2024/09/21 16:41:29
#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));
}
程序运行后的输出结果是(C)
A)20 9 B)9 9 C)20 11 D)11 11

请问这道题怎么做呢?十分感谢

sizeof(p)是指的p作为一个字符数组所占的存储空间,由于p被声明为char p[20],所以sizeof(p)为20。

strlen(p)是求的p中所存放的字符串的长度,
strcpy(p+strlen(q),r); //strlen(q)也就是字符串"abc"的长度,也就是3
所以strcpy(p+strlen(q),r);也就是strcpy(p+3,r),
也就是将字符串"abcde"拷贝到以p[3]为起始的空间(所以p[3]中原来的'd'也被覆盖了),
所以处理后,p中存放的字符串为"abcabcde"

strcat(p,q);
这个处理的作用是将字符串q接到字符串p后面,也就是将"abc"接到"abcdabcde"后面,所以处理后,p中存放的字符串为"abcabcdeabc"

所以最后,p中存放的字符串为"abcabcdeabc",字符串长度为11

所以程序运行后的输出结果是:20 11