以下程序中函数f的功能是将n个字符串按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10], int n)
{
char t[20]; int i,j;
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(strcmp (p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{
char p[][lO]-{"abc","aabdfg","abbd","dcdbe","cd"};int i;
f(p,5); printf("%dkn",strlen(p[0]));
}
程序运{亍后的输出结果是
A.6
B.4
C.5
D.3
参考答案:C
解析: 函数strcmp(字符串1,字符串2)作用是将”字符串1”和”字符串2”进行比较,如果“字符串1”》”字符串2”,返回一个大于0的整数值;如果“字符串1”<“字符串2”,返回一个小于0的整数值;如果”字符串1”=“ 字符串2”,返回0。函数strcpy(字符串数组名,字符串,[整型表达式])的作用是将“字符串”的前“整型表达式”个字符有入到指定的“字符数组”中,若省略“整型表达式”,则将整个“字符串”存入,字符数组”中.函数f()的功能是利用选择法把一个具有n行的二维数组中按行存放的 n个字符串由大到小排序。在主函数中定义了一个二维字符数组p并给它按行赋初值,然后调用f()函数;把它按行从大到小排列。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串。由此可知最大的字符串为“dcdbe”,排序后存放在第一行,其首地址为P[0],在输出语句输出的p[0]指向的字符串长度是5。所以4个选项中C正确。