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

admin2022-04-02  26

问题 有下列程序
 #include<stdio.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(*p>*p[j])
     {t=*p;*p=*p[j];*p[j]=t;}
   for(i=0;i<4;i++)
    printf("%s",v);
 }
 程序执行后的输出结果是(          )。

选项 A、abcd efg hijkl mnopq
B、afg ebcd hnopq mijkl
C、efg abcd mnopq hijkl
D、mijkl hnopq ebcd afg

答案B

解析 程序首先定义二维字符数组v,使用四个字符串初始化,另外定义字符指针数组p。通过第一个for循环,将v的四个字符串的首地址赋给p。第二个for循环通过两层内嵌循环将p中元素指向的字符串首字母进行排序交换。规则是:将指向的字符串的首字母字符按照字母表中的顺序排序后交换,注意,这里交换的是首字母,而不是整个字符串,所以程序输出:afg ebcd hnopq mijkl。本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/Uhkp777K
0

最新回复(0)