////////给字符数组动态分配内存,完成字符串的排序
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Accept(char *[]); //接受
void Sort(char *[],int); //排序
void Print(char *[],int); //打印
void main()
{
char *str[5];
int n;
n=Accept(str); //接受句子的数目,返回一个字符串数量
Sort(str,n);
Print(str,n);
}
int Accept(char * name[])
{
int m,i;
printf("input nums(1 to 5) of string:");
scanf("%d",&m);
for(i=0;i<m;i++)
{
name[i]=(char *)malloc(20*sizeof(char));
}
for(i=0;i<m;i++)
{
printf("input %d string:",i+1);
scanf("%s",name[i]);
}
return m;
}
void Sort(char *name[],int m)
{
int i,j,k;
char temp[20];
for(i=1;i<m;i++)
{
for(j=0;j<i;j++)
if(strcmp(name[j],name[i])<0)
{
strcpy(temp,name[i]);
for(k=i;k>j;k--)
{
strcpy(name[k],name[k-1]);
}
strcpy(name[j],temp);
}
}
}
void Print(char *name[],int m)
{
int i;
printf("\n\nthe sort strings:\n");
for(i=0;i<m;i++)
{
printf("the %d string:",i+1);
printf("%s\n",name[i]);
}
}
评论