萌新脑已烧,求大神帮助
0865-字符串排序(数组)输入若于书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。
输入书名个数不定,直到文件结束为止。
将字符串按ASCII码从小到大排序后输出。
输入样列
Java
Basic
C#
Fortran
Delphi
输出样例
Basic
C#
Delphi
Fortran
Java
程序代码:#include "stdio.h"
#include "string.h"
void main()
{char str[5][100],str_t[100]; // 数字5是可以改成你要输入书本数量
int i,j;
for(i=0;i<5;i++)
scanf("%s",&str[i]);
for(j=0;j<5;j++)
for(i=0;i<5-j;i++)
{
if(strcmp(str[i],str[i+1])>0)
{strcpy (str_t ,str[i+1]);
strcpy (str[i+1] ,str[i]);
strcpy (str[i] ,str_t);}
};
for(i=0;i<5;i++)
printf("%s \n ",str[i]);
}[此贴子已经被作者于2017-4-9 19:28编辑过]


程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMBER 5 //可以根据书本数量进行更改
int compare_sizes(const void *v1,const void *v2);
int main(void)
{
char temporary[80],*the_title_of_a_book[NUMBER];
int count;
printf("请输入书名: \n");
for(count=0;count<NUMBER;count++)
{
gets(temporary);
the_title_of_a_book[count]=(char *)malloc(strlen(temporary)+1);
strcpy(the_title_of_a_book[count],temporary);
}
qsort(the_title_of_a_book,NUMBER,sizeof(the_title_of_a_book[0]),compare_sizes);
for(count=0;count<NUMBER;count++)
{
printf("%s\n",the_title_of_a_book[count]);
}
return 0;
}
int compare_sizes(const void *v1,const void *v2)
{
return (strcmp(*(char **)v1,*(char **)v2));
}
我并不确定,你老师所说的数组是否是指针数组。
但是我用标准库函数qrsot尝试了一下,确实可以解决问题。
才疏学浅,若有错误。望不吝指教。