在主函数中输入10个等长的字符串。用另一函数对他们排序。然后在主函数输出这10个已排好序的字符串。

#include <stdio.h>
#include <string.h>
char sort(char p[10][100])
{
int i,j,k;
char temp[100]; //temp只需要定义一维的就够了
for(i=0;i<9;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(strcmp(p[i],p[j])<0)
k=j;
if(k!=i)
{
strcpy(temp,p[i]);
strcpy(p[i],p[k]);
strcpy(p[k],temp);
}
}
}
main()
{
char a[10][100];
int i,j,k;
for(i=0;i<10;i++)
scanf("%s",a[i]);
sort(a[10][100]);
printf("排序后字符串为:\n");
for(i=0;i<10;i++)
printf("%s\n",*(a+i));
return 0;
}

用的VC++,编译连接都没报错,但执行时跳出框框
求解

#include <stdio.h>
#include <string.h>
void sort(char p[10][100]) //把char改为void
{
int i,j; //只要i,j是声明,
char temp[100]; //temp只需要定义一维的就够了
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
if(strcmp(p[i],p[j])<0)
{
strcpy(temp,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],temp);
}
}
}
main()
{
char a[10][100];
int i; //只要参数i就可以了,不要j,k的声明
for(i=0;i<10;i++)
scanf("%s",a[i]);*/
sort(a); //只要数组首地址就可以了
printf("排序后字符串为:\n");
for(i=0;i<10;i++)
printf("%s\n",*(a+i));
return 0;
}
温馨提示:答案为网友推荐,仅供参考