完全想不明白!!c的题目,字符串排序

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:37:57
#include"string.h"//用的是指针数组,输入basic,pascal,for,fse,c
#include"conio.h" //不能正确输出!请问错在哪里
#include"stdio.h"
main()
{
static char *name[5],*temp;
int i,j,k;
clrscr();
printf("input 5 names:\n");
for(i=0;i<5;i++)
gets(name[i]);
for(i=0;i<5;i++)
{ k=i;
for(j=i+1;j<5;j++)
if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
{ temp=name[i];name[i]=name[k];name[k]=temp;}
}
printf("the resulu is:\n");
for(i=0;i<5;i++)
puts(name[i]);
getch();
}

错误在于你没有为name[i]分配空间,修改如下:

//---------------------------------------------------------------------------

#include"string.h"
#include"conio.h"
#include"stdio.h"
#include <stdlib.h> /*用到了malloc()函数*/
main()
{
static char *name[5],*temp;
int i,j,k;
clrscr();
printf("input 5 names:\n");
for(i=0;i<5;i++){
name[i]=malloc(sizeof(char)*80);/*分配长度为80个字符的空间*/
gets(name[i]);
}
for(i=0;i<5;i++)
{ k=i;
for(j=i+1;j<5;j++)
if(strcmp(name[k],name[j])>0)k=j;
if(k!=i)
{ temp=name[i];name[i]=name[k];name[k]=temp;}
}
printf("the resulu is:\n");
for(i=0;i<5;i++){
puts(name[i]);
free(name[i]);/*释放先前分配的空间*/
}

getch();
}

//---------------------------------------------------------------------------

你是用VC的话就不能使用clrscr();
建议你使用system("cls"