选择题 21.  有以下程序:
    #include<strintg.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
【答案解析】 在主函数中,首先定义一个包含20个元素的字符数组p,执行语句“strcpy(p+strlen(q),r);”,数组p的内容变为{a,b,c,a,b,c,d,e,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0},执行语句“streat(p,q);”,数组p的内容变为{a,b,c,a,b,c,d,e,a,b,c,\0,\0,\0,\0,\0,\0,\0,\0,\0},函数sizeof(p)是求数组p的大小,返回20,而函数strlen(p)是计算以p所指起始地址的字符串的长度,这一长度不包括串尾的结束标志0,所以函数返回11。