【C补充】【字符串】按日期排序显示一个月的日程

1、程序说明

  要求: 用户按固定格式输入一系列日程(输入0时停止),程序将其按日期排序,并逐行显示。

  输入格式: “日期 事件”。例如 “24 Mom’s birthday”


2、思路

2.1 字符串存储形式

  • 将读入的字符串中的日期和事件分开存储(scanf读取日期,getchar逐个读取事件字符串),便于之后的比较和排序。
  • 排序(strcpy函数)结束后,二者合并(strcat函数)存储,存储在二维字符数组中;
  • 将排序好且合并后的字符数组逐行输出。

2.2 排序存储的方法

  1. 提取日期,单独存储,将其与此前的日期比较(strcmp函数);
    此前的日期已被存储在日程字符串的前2位,由strcmp函数的比较机制,不必额外单独提取
  2. 找到比其大的那一行,余下各行各下移一行,空出该行的位置;
    由数组存储机制,下移实际是后移
  3. 将该日期对应的完整内容存储在空出的该行之中。

3、代码

/************************************
 *        显示一个月的日程列表        *
 * **********************************/

#include<stdio.h>
#include<string.h>

#define MAX_REMIND  50                //事件个数上限
#define MSG_LEN  60                   //各事件描述的长度上限

int read_line(char str[], int n);     //读取事件内容并存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值