单选题
有以下程序,其中函数f的功能是将多个字符串按字典顺序排序
#include <string,h>
void f(char *p[], int n)
char *t;
int i,j;
for(i=0; i<n-1; i++)
for(j=i+1;j<n; j++)
if(strcmp(p[i],p[j])>0)
t=p[i];p[i]=p[j]; p[j]=t;
main()
char *p[5]="abc","aabdfg","abbd","dcdbe","cd";
f(p,5);
printf("%d/n"。strlen(p[1]));
程序运行后的输出结果是
【正确答案】
D
【答案解析】[解析] 本题所说的字典顺序是由f()函数中所调用的strcmp()函数对字符串大小的比较方法来决定的。strcmp()函数是依次对两个参数所指字符串对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符的 ASCII码值的大小来决定整个字符串的大小。另外,根据f()函数中交换两个元素的条件 strcmp(p[i],p[j]>0可以看出,当前面的元素大于后面的元素时,则交换两个元素,即从小到大排序。所以数组最终排序的结果是"aabdfg","abbd","abc", "cd","dcdbe"。因此最终输出的p[1]的长度为4.应该选择D。