问题 单项选择题

有以下程序:
#include <stdio.h>
#include <string.h>
main()
char p[20]='a', 'b', 'c', 'd', q[]="123", r[]=" 123de";
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()函数,将字符串r连接到字符串p之后,即执行后p中的内容为“123d123de”。因为“strlen(q)”表示求字符串q的长度,很明显为3,所以语句“strcpy(p+strlen(q), q); ”的作用就是:将字符串q复制到数组p的第4个元素位置处。

多项选择题
单项选择题