C语言实现的万年历源代码分析
"C语言链表万年历源代码" 这是一个使用C语言编写的万年历程序,可以用于查看特定年份的日历。程序通过菜单交互式地让用户选择操作,如查看年历、月历或者退出系统。核心功能包括计算一年的天数、判断是否为闰年、获取指定月份的天数以及打印年历和月历。 1. **菜单功能**: - `menu()` 函数创建了一个简单的用户界面,提供了3个选项:查看年历、查看月历和退出程序。用户输入的选项通过`switch`语句处理,确保用户输入的有效性。 2. **闰年判断**: - `assessyear(int year)` 函数用于判断给定的年份是否为闰年。在公历中,闰年通常每四年出现一次,但有例外,比如世纪年(年份以00结尾)必须能被400整除才是闰年。这个函数应该包含了这些规则。 3. **计算一年的天数**: - `yeardays(int year)` 函数计算指定年份的总天数,这通常是365天,但对于闰年则是366天。 4. **获取指定月份的天数**: - `monthdays(int year, int yue, int *m)` 函数根据年份和月份计算该月有多少天。考虑到不同月份的天数不同,以及二月可能因为闰年而有29天,这个函数会动态计算并返回结果。 5. **打印年历**: - `printyear(int year, int *m, int n)` 函数负责打印整个年份的日历,可能需要调用`monthdays`来获取每个月的天数,并进行适当的格式化输出。 6. **打印月历**: - `printmonth(int year, int *m, int yue)` 函数用于打印指定年份和月份的日历。需要处理不同月份的第一天是星期几的问题,以及月份的天数。 7. **运行年份检查**: - `printrunnian(int year)` 函数检查给定的年份是否为闰年,并输出相应的信息。 8. **主函数**: - `main()` 是程序的入口点,它调用`operatemenu()`来启动菜单循环,直到用户选择退出。 此程序的实现依赖于标准输入输出库`stdio.h`、控制台输入输出库`conio.h`、内存管理库`stdlib.h`和数学库`math.h`。`conio.h`库在某些环境中可能不通用,特别是在更现代的C编译器中,可能需要使用其他方法来处理用户输入。此外,程序中的注释都是以“/*...*/”形式的多行注释,方便理解和修改代码。
#include<conio.h>
#include<stdlib.h>
#include<math.h>
int menu(); /*菜单函数*/
void operatemenu(); /*菜单处理函数*/
int assessyear(int year); /*润年判断函数*/
void howmanydays(int year,int *m); /*每月多少天函数*/
int yeardays(int year ); /*从公元0年到你输入的上一年共有多少天*/
int monthdays(int year,int yue,int *m); /*从公元零年到你输入的上一月共有多少天*/
void printyear(int year,int *m,int n); /*输出年日历*/
void printmonth(int year,int *m,int yue); /*输出月日历*/
void printrunnian(int year); /*输出年是润年还是非闰年*/
void main() /*主函数*/
{
operatemenu();
}
int menu() /*菜单函数*/
{
int chose;
system("cls"); /*清屏函数*/
printf("****************************\n");
printf(" 08 通信2班 王韬 \n");
printf(" 万年历系统 \n");
printf(" 1查看月日历 \n");
printf(" 2查看年日历 \n");
printf(" 3退出 \n");
printf("****************************\n");
fflush(stdin);
printf("请选择\n");
scanf("%d",&chose);
if(chose!=1&&chose!=2&&chose!=3)
printf("你输入错误请重新输入\n");
}
while(chose!=1&&chose!=2&&chose!=3);
return chose;
}
void operatemenu() /*菜单处理函数*/
{
int n=0,month[13],year,yue,k; /*month[13]用来存每月多少天的其中的month[0]没用设为0*/
printf("请输入数字,输入-1将不会执行下面的菜单选项,程序将不会被执行,慎重!\n");
scanf("%d",&k);
while(k!=-1) /*用while 循环实现菜单的重复选择*/
{
n=menu();
switch(n)
{
case 1:printf("查看月日历\n");
printf("请输入你想查看的年份和月份\n");
scanf("%d%d",&year,&yue);
printf("年份:%d,月份:%d\n",year,yue);
howmanydays(year,month);
printmonth(year,month,yue);
break;
case 2:printf("查看年日历\n");
printf("请输入你想查看的年份\n");
scanf("%d",&year);
printf("年份:%d\n",year);
howmanydays(year,month);
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展