当前位置:网站首页>【C补充】【字符串】按日期排序显示一个月的日程
【C补充】【字符串】按日期排序显示一个月的日程
2022-07-01 16:28:00 【一苇以航fp】
1、程序说明
要求: 用户按固定格式输入一系列日程(输入0时停止),程序将其按日期排序,并逐行显示。
输入格式: “日期 事件”。例如 “24 Mom’s birthday”
2、思路
2.1 字符串存储形式
- 将读入的字符串中的日期和事件分开存储(
scanf读取日期,getchar逐个读取事件字符串
),便于之后的比较和排序。 - 排序(
strcpy函数
)结束后,二者合并(strcat函数
)存储,存储在二维字符数组中; - 将排序好且合并后的字符数组逐行输出。
2.2 排序存储的方法
- 提取日期,单独存储,将其与此前的日期比较(
strcmp函数
);
此前的日期已被存储在日程字符串的前2位,由strcmp函数
的比较机制,不必额外单独提取 - 找到比其大的那一行,余下各行各下移一行,空出该行的位置;
由数组存储机制,下移实际是后移 - 将该日期对应的完整内容存储在空出的该行之中。
3、代码
/************************************ * 显示一个月的日程列表 * * **********************************/
#include<stdio.h>
#include<string.h>
#define MAX_REMIND 50 //事件个数上限
#define MSG_LEN 60 //各事件描述的长度上限
int read_line(char str[], int n); //读取事件内容并存储
int main(void)
{
char reminders[MAX_REMIND][MSG_LEN+3]; //+3是预留日期和字符串空字符的位置
char day_str[3], msg_str[MSG_LEN+1]; //临时存储日期和事件
int day, i, j;
int num_remind = 0; //记录已读取的日程数量
//设置死循环,保证用户可持续输入
for(;;){
//限制读取数量
if(num_remind == MAX_REMIND){
printf("———————————— 日程已达上限 ————————————\n");
break;
}
printf("Enter day and reminder: ");
scanf("%2d", &day); //读取前两位的数字
if(day == 0) break; //读取终止
sprintf(day_str, "%2d", day); //将日期转换为字符串存储,占两格右对齐
read_line(msg_str, MSG_LEN); //读取事件并存储
/********按日期排序********/
//逐行比较,找到适合适合的位置(i)
for(i=0; i<num_remind; i++){
if( strcmp(day_str, reminders[i]) < 0 ) break;
}
//空出该位置所在行(其下方字符串各下移一行)
for(j=num_remind; j>i; j--){
strcpy( reminders[j], reminders[j-1] );
}
//将日期和事件合并存储
strcpy( reminders[i], day_str );
strcat( reminders[i], msg_str );
num_remind++;
}
//逐行显示排序后的日程
printf("\n\nDay Reminder: \n");
for(i=0; i<num_remind; i++){
printf(" %s\n", reminders[i]);
return 0;
}
int read_line(char str[], int n)
{
int i=0, ch;
while( (ch=getchar()) != '\n' ) //空格不会被跳过(与scanf不同)
if(i<n) str[i++] = ch;
str[i] = '\0'; //字符数组末位加空字符,成为字符串
return i; //返回字符数组长度
}
4、运行结果示例
边栏推荐
- Detailed explanation of activity life cycle and startup mode
- 【C语言基础】12 字符串
- 数据库系统原理与应用教程(006)—— 编译安装 MySQL5.7(Linux 环境)
- Judge whether the binary tree is a binary search tree
- Report on Market Research and investment prospects of ammonium dihydrogen phosphate industry in China (2022 Edition)
- Research and investment strategy report of neutral protease industry in China (2022 Edition)
- What are the differences between PHP and DW
- Alibaba cloud, Zhuoyi technology beach grabbing dialogue AI
- Redis6.0 new features
- 求求你们,别再刷 Star 了!这跟“爱国”没关系!
猜你喜欢
Tutorial on the principle and application of database system (002) -- MySQL installation and configuration: MySQL software uninstallation (Windows Environment)
Défaillance lors du démarrage de la machine virtuelle VMware: le poste de travail VMware n'est pas compatible avec hyper - V...
Hi Fun Summer, play SQL planner with starrocks!
C language input / output stream and file operation
Introduction to software engineering - Chapter 6 - detailed design
Analysis of PostgreSQL storage structure
VMware 虚拟机启动时出现故障:VMware Workstation 与 Hyper-v 不兼容...
Installation and use of sqoop
Tutorial on principles and applications of database system (006) -- compiling and installing MySQL 5.7 (Linux Environment)
EndeavourOS移动硬盘安装
随机推荐
[JetsonNano] [教程] [入门系列] [三] 搭建TensorFlow环境
What are the differences between PHP and DW
Analysis of PostgreSQL storage structure
判断二叉树是否为二叉搜索树
Installation and use of sqoop
Basic usage of Frida
游戏行业安全选择游戏盾,效果怎么样?
Virtual serial port simulator and serial port debugging assistant tutorial "suggestions collection"
想做软件测试的女孩子看这里
Origin2018安装与使用(整理中)
Judge whether the binary tree is a binary search tree
Tutorial on principles and applications of database system (004) -- MySQL installation and configuration: resetting MySQL login password (Windows Environment)
How to solve the problem that the battery icon of notebook computer does not display
What is the effect of choosing game shield safely in the game industry?
[live broadcast appointment] database obcp certification comprehensive upgrade open class
How to repair the laptop that cannot connect to the wireless network
Redis distributed lock
Research and investment strategy report of neutral protease industry in China (2022 Edition)
数据库系统原理与应用教程(003)—— MySQL 安装与配置:手工配置 MySQL(windows 环境)
Ring iron pronunciation, dynamic and noiseless, strong and brilliant, magic wave hifiair Bluetooth headset evaluation