有下列程序  #include<stdio.h>  #include<string.h>  main()  {char v[4][10]={"efg","abcd","mnopq","hijkl"},*p[4],*t;   int i,j;   f

admin2022-10-24  24

问题 有下列程序
 #include<stdio.h>
 #include<string.h>
 main()
 {char v[4][10]={"efg","abcd","mnopq","hijkl"},*p[4],*t;
    int i,j;
    for(i=0;i<4;i++)
      p=v
    for(i=0;i<3;i++)
      for(j=i+l;j<4;j++)
        if(stremp(p,p[j])>0)
        {t=p;p=p[j];p[j]=t;}
    for(i=0;i<4;i++)
        printf("%s",p);
 }
 程序执行后的输出结果是(          )。

选项 A、efg abcd hijkl mnopq
B、abcd efg hijkl mnopq
C、mnopq hijkl efg abcd
D、efg abcd mnopq hijkl

答案B

解析 main函数中定义了一个二维数组v,另外还定义了一个指针数组p。通过for循环,将v的各个行(字符串的首地址)赋给p的对应下标的元素。然后通过嵌套的for循环,为该二维数组中存放的各个字符串进行排序。strcmp函数返回值大于0时(p>p[j])交换两个字符串,所以每一轮内嵌的for循环,都将下标为i的字符串放在最终的排序位置上,即排序规则是按字符串升序排列。字符串排序时,是将两个字符串自左向右逐个字符比较(按字符的ASCII值大小),直到出现不同的字符或遇到“\0”为止。排序后,再将v中各个排序后的字符串输出。所以程序输出结果为abcd efg hijkl mnopq。故本题答案为B选项。
转载请注明原文地址:https://jikaoti.com/ti/2id0FFFM
0

相关试题推荐
最新回复(0)