单选题
有以下程序:
#include<stdio.h>
main()
{char a[5][10]={"China","beijing","very","welcome","you"};
char *p[5];int i;
for(i=3;i<5;i++)
{p[i]=*(a+i);
printf("%s",p[i]);
printf("%c",*p[i]);
}
}
程序执行后的输出结果是______。
【正确答案】
D
【答案解析】[解析] 本题中定义一个二维字符数组a,它包含5个字符串,每个字符串存放在一个长度为10的一维数组中,指针数组p包含5个字符指针元素;for循环中,每次将*(a+i)赋给p[i],再输出p[i]和*p[i];由于*(a+i)等价于a[i],每次都是将下标为i的字符串首地址赋给p[i],再输出该字符串和该字符串的首字符。i=3时,输出字符串“welcome”,输出字符"w";i=4时,输出字符串“you”,输出字符"y",综上输出结果为:“welcomewyouy”。故本题答案为D选项。