习题8-7 字符串排序 (20 分)
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted:
每行一个字符串
输入样例:
red yellow blue green white
输出样例:
After sorted:
blue
green
red
white
yellow
分析:本题的难点是如何存储5个字符串结构的数据
显然,我们不可能利用5次 scanf("%s",ch1) 格式化输入来分别存储字符串,因为这样没办法进行运算!
按照大小顺序输出的话一定会利用到 字符串函数 strcmp() 和排序算法, 而排序算法又基本是在数组结构中进行的。
所以接下来就是具体的落实,由于字符串本身就属于一种一维字符数组。5个1维字符串数组,不就是一个二维数组 a[5][80]吗。
代码
#include<stdio.h>
#include<string.h>//因为调用了strcpy strcmp
#define LIM 5 //常量用宏来定义
#define SIZE 80 //字符串最大值
int main(void)
{
char array[LIM][SIZE]={};
// 定义一个5行81列的字符型数组,并初值为空!形如:
// {'0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
// {'0','0','0','0','0','0','0','0','0','0','0