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

admin2022-06-24  21

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

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

答案B

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

最新回复(0)