用指针将输入的四个字符串按长度升序排序
#include<stdio.h>
#include<string.h>
#define M 5
#define N 20
void StrSort(char (*p)[N],int n)
{
int i,j,k,x[n]; char t[N];
for(i=0; i<n; i++ )
x[i]=strlen(p[i]);
for(i=0; i<n-1; i++ )
{ k=i;
for(j=i+1; j<n; j++ )
if(x[j]<x[i]) k=j;
if(k!=i)
{ strcpy(t,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],t);
x[k]=x[i];
}
}
}
int main()
{
char p[M][N];
int i;
for(i=0;i<M;i++)
gets(p[i]);
StrSort(p,4);
for(i=0;i<M;i++)
puts(p[i]);
return 0;
}
输入A↵B↵AA↵BB↵ 输出的为A↵B↵AA↵BB
如果设计的子函数不包括后面的int n 即子函数如下图
那么假设输入A↵B↵AA↵BB↵ 输出的为B↵A↵BB↵AA↵
这是为什么呢?加上int n之后有什么区别吗?A与B的字符大小都为1,正确的话要怎么排序呢?