求助:一题c语言。。。

来源:百度知道 编辑:UC知道 时间:2024/05/23 12:29:59
一下程序,其中函数f的功能是将多个字符串按字典顺序排序:

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[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t}
}

void main()
{
char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[4]));
}

答案为什么是:5 ?
它排序不是把最长的那个排在最后么???

谢谢~!
我知道是按a,b,c,d排,那个最主要告诉我这个程序如何运行的。。。

你的编译有问题啊,我给你改好了,也能达到你的要求!
最后是打印数组p的长度,肯定是5个字符串啊!

#include <stdio.h>
#include <stdlib.h>
#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[i],p[j])>0) {t=p[i];p[i]=p[j];p[j]=t;}
}

void main()
{
char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);

printf("%d\n",strlen(p[4]));

for(int i=0;i<5;i++)
printf("%s ", p[i]);
printf("\n");
}