有以下程序: #include <string.h> main() { char p[20]={’a’,’b’,’c’,’d’},q[]="abc",r[]="abcde"; strcat(p,r); strcpy(p+

admin2009-01-15  29

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

答案2

解析 本题首先定义了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。
转载请注明原文地址:https://kaotiyun.com/show/uQXp777K
0

最新回复(0)