单选题
有以下程序:
#include<stdio.h>
#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));
}
程序运行后的输出结果是______。
【正确答案】
C
【答案解析】[解析] strcpy:字符串拷贝函数;strlen:求字符串长度函数(注意:不包含字符串结束标识符"/0");strcat:字符串连接函数。执行完语句strcat(p,r);后,p数组中存储的元素为:a,b,c,d,a,b,c,d,e。执行语句strcpy(p+strlen(q),q);得到的结果是将q所指向的字符串拷贝至p+strlen(q)开始的存储位置,因为strlen的值为3,即从p+3开始存储q中的元素。所以执行完strcpy(p+strlen(q),q)语句后,字符数组p[20]的存储元素为:a,b,c,a,b,c。所以strlen(p)的结果为6,C选项正确。