有以下程序,其中函数f的功能是将多个字符串按字典顺序排序 #include <string,h> void f(char *p[], int n) { char *t; int i,j; for(i=0; i<n-

admin2009-01-15  55

问题 有以下程序,其中函数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,p[j])>0)         {t=p;p=p[j];  p[j]=t;}    }    main()    {      char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};      f(p,5);      printf("%d\n"。strlen(p[1]));    }    程序运行后的输出结果是

选项 A、2
B、3
C、6
D、4

答案8

解析 本题所说的字典顺序是由f()函数中所调用的strcmp()函数对字符串大小的比较方法来决定的。strcmp()函数是依次对两个参数所指字符串对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符的 ASCII码值的大小来决定整个字符串的大小。另外,根据f()函数中交换两个元素的条件 strcmp(p,p[j]>0可以看出,当前面的元素大于后面的元素时,则交换两个元素,即从小到大排序。所以数组最终排序的结果是"aabdfg","abbd","abc", "cd","dcdbe"。因此最终输出的p[1]的长度为4.应该选择D。
转载请注明原文地址:https://jikaoti.com/ti/NrK0FFFM
0

最新回复(0)