各位大侠,看看我这个程序有什么问题,无法执行。

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:35:25
题目:在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。用指针数组处理。
#include<stdio.h>
#include<string.h>
void main()
{ void sort(char *s[],int n);
int i;
char *s[10];
for(i=0;i<10;i++)
gets(s[i]);
sort(s,10);
for(i=0;i<10;i++)
puts(s[i]);
}
void sort(char *s[],int n)
{int i,j,k;
char *t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{k=i;
if(strcmp(s[k],s[j])>0) k=j;
if(k!=i)
{t=s[k];s[k]=s[i];s[i]=t;}}
}

根本问题在这里,*s[i] 是野指针 没有具体的指向
char *s[10];
for(i=0;i<10;i++)
gets(s[i]);
-------------------------------------------
看我的,是给5个国家排序的。跟你的题目差不多
#include <stdio.h>
#include <string.h>

void order(char *name[5]);
void main()
{
int i;
char *p[5]; //指针数组需要初始化
char str[5][20];
printf("请输入5个国家名称\n");
for(i = 0; i<5; i++)
{
p[i] = str[i]; //初始化
gets(p[i]);
fflush(stdin);
}
order(p);
}
void order(char *name[5])
{
int j, k;
char *temp;
for(j = 0; j < 5; j++)
{
for(k = 0; k < 4; k++)
{
if(strcmp(name[k], name[k+1])> 0)
{
temp=name[k];
name[k]=name[k+1];
name[k+1]=temp;