帮忙查错(c语言)

来源:百度知道 编辑:UC知道 时间:2024/05/12 17:30:22
#define MAX_LEN 20
#include<string.h>
#include<stdio.h>
void main()
{
void sort(char *s[]);
int i;
char *ps[10],str[10][MAX_LEN];
for(i=0;i<10;i++)
ps[i]=str[i];
printf("请按行输入10个字符串:\n");
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(ps);
printf("排序后的字符串为:\n");
for(i=0;i<10;i++)
printf("%s",ps[i]);
}

void sort(char *s[])
{
int i,j;
char *p;
int k;
for(i=1;i<10;i++){
k=i;
for(j=i+1;j<=10;j++)
if(strcmp(s[k],s[j])>0) k=j;
if(k!=i)
{p=s[i];s[i]=s[k];s[k]=p;}
}
}

编译后没有错误,但运行有问题。
在主函数中输入10个不等长的字符串,用另外一个函数对它们进行排序,然后在主函数中输出排序后的字符串。要求用指针数组处理

自己慢慢看注释

#define MAX_LEN 20
#include<string.h>
#include<stdio.h>

void sort(char *s[]);
void main()
{
/*这一句放到main()外面。
void sort(char *s[]); */
int i;
char *ps[10],str[10][MAX_LEN];
for(i=0;i<10;i++)
ps[i]=str[i];
printf("请按行输入10个字符串:\n");
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(ps);
printf("排序后的字符串为:\n");
for(i=0;i<10;i++)
/* 最好加上一个换行符
printf("%s",ps[i]); */
printf("%s\n",ps[i]);
}

void sort(char *s[])
{
int i,j;
char *p;
int k;

/*i 应该从0 开始*/
/* for(i=1;i<10;i++) */
for(i=0;i<10;i++){
k=i;
/* j 应该只到9就结束了
for(j=i+1;j<=10;j++) */
for(j=i+1;j<10;j++)
if(strcmp(s[k],s[j])>0) k=j;
if(k!=i)
{p=s[i];s[i]=s[k];s[k]=p;