萌新脑已烧,求大神帮助
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尝试了一下,确实可以解决问题。 才疏学浅,若有错误。望不吝指教。