身为菜鸟的我写了一个日历查询程序
身为菜鸟的我写了一个日历查询程序
这个程序能完成的功能:
1.输入年份得到年历
2.输入年月得到月历
3.输入年月日得到距今多少天并显示今天的日期,是否为公历节日,显示输入日期是星期几。
以下是程序代码
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include <memory.h>int isleap(int year)//判断是否为闰年,闰年返回1,不是返回0
{if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))return 1;elsereturn 0;
}int max_day(int year, int month)//为每月有多少天赋值
{int day[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (isleap(year) == 1)day[1] = 29;return day[month - 1];
}int total_day(int year, int month, int day)//输出该日期是该年的第几天
{int sum = 0;int i = 1;for (i = 1; i < month; i++)sum += max_day(year, i);sum += day;return sum;
}
int weekday(int year, int month, int day)//判断该日期是星期几
{int count;count = (year - 1) + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + total_day(year, month, day);count %= 7;return count;
}void display_week(int year, int month, int day)//输出该日期是星期几
{int count;count = weekday(year, month, day);switch (count){case 0:printf("%d年%d月%d日是周日\n", year, month, day); break;case 1:printf("%d年%d月%d日是周一\n", year, month, day); break;case 2:printf("%d年%d月%d日是周二\n", year, month, day); break;case 3:printf("%d年%d月%d日是周三\n", year, month, day); break;case 4:printf("%d年%d月%d日是周四\n", year, month, day); break;case 5:printf("%d年%d月%d日是周五\n", year, month, day); break;case 6:printf("%d年%d月%d日是周六\n", year, month, day); break;default:system("cls");printf("error\n");}
}void display_month(int year, int month)//输出该月月历
{int i = 0, j = 1;int week, max;week = weekday(year, month, 1);max = max_day(year, month);printf("\n\t\t\t\t%d年%d月",year,month);printf("\n");printf("\n\t日\t一\t二\t三\t四\t五\t六\n\n");for (i = 0; i < week; i++)printf("\t");for (j = 1; j <= max; j++){printf("\t%d",j);if (i % 7 == 6)printf("\n\n");i++;}printf("\n\n");
}void display_year(int year,int month)//显示年历
{int i = 0, j = 1,k=0;for(k=1;k<=12;k++){month=k;int week, max;week = weekday(year, month, 1);max = max_day(year, month);printf("\n\t\t\t\t%d年%d月",year,month);printf("\n");printf("\n\t日\t一\t二\t三\t四\t五\t六\n\n");for (i = 0; i < week; i++)printf("\t");for (j = 1; j <= max; j++){printf("\t%d",j);if (i % 7 == 6)printf("\n\n");i++;}printf("\n\n");}
}void display_holiday(int month,int day)
{if(month==1){if(day==1)printf("是元旦");else printf("不是公历节日");}else if(month==2){if(day==14)printf("是情人节");else printf("不是公历节日");}else if(month==3){if(day==8)printf("是妇女节");else if(day==14)printf("是白色情人节");else if(day==15)printf("是消费者权益日");else printf("不是公历节日");}else if(month==4){if(day==1)printf("是愚人节");else if(day==5)printf("是清明节");else printf("不是公历节日");}else if(month==5){if(day==1)printf("是劳动节");else if(day==4)printf("是青年节");else printf("不是公历节日");}else if(month==6){if(day==1)printf("是儿童节");else printf("不是公历节日");}else if(month==8){if(day==1)printf("是建军节");else printf("不是公历节日");}else if(month==9){if(day==10)printf("是教师节");else printf("不是公历节日");}else if(month==10){if(day==1)printf("是国庆节");else if(day==31)printf("是万圣节");else printf("不是公历节日");}else if(month==12){if(day==25)printf("是圣诞节");else printf("不是公历节日");}//else printf("不是公历节日1");printf("\n");
}void display_day_distance(int year,int month,int day)
{time_t now;struct tm * dtn;time(&now);dtn = localtime(&now);printf("当前时间为: %d年%d月%d日\n",dtn->tm_year + 1900, dtn->tm_mon + 1, dtn->tm_mday);//printf("%d:%d:%d\n", dtn->tm_hour, dtn->tm_min, dtn->tm_sec);time_t t1;time_t t2;struct tm OldTime;struct tm NewTime;memset(&OldTime,0x0,sizeof(tm));//当前时间OldTime.tm_year = dtn->tm_year;OldTime.tm_mon = dtn->tm_mon + 1;OldTime.tm_mday = dtn->tm_mday;memset(&NewTime,0x0,sizeof(tm));//输入日期NewTime.tm_year = year-1900;// 2011 年表示为 2011 - 1900 = 111NewTime.tm_mon = month;NewTime.tm_mday =day;t1 = mktime(&NewTime); //2011-12-6t2 = mktime(&OldTime); //2010-12-6printf("输入日期距今有%d天\n",abs(t1-t2)/(24*3600));
}
int main()
{int year, month, day;int s;printf("请选择功能\n 1.输入年月得到该月月历\n 2.输入年得到年历\n 3.输入年月日得到该日期距当前多少天并获得该日期详情\n选择为:");scanf("%d",&s);system("cls");if(s==1){printf("请输入年份");scanf_s("%d", &year);printf("请输入月份");scanf_s("%d", &month);system("cls");if (month<1 || month>12 ){printf("error!");return -1;}display_month(year, month);}if(s==2){printf("请输入年份");scanf_s("%d", &year);month=1;display_year(year,month);}if(s==3){printf("请输入年份");scanf_s("%d", &year);printf("请输入月份");scanf_s("%d", &month);printf("请输入日");scanf_s("%d", &day);system("cls");if (month<1 || month>12 || day<1 || day>31){printf("error!");return -1;}//printf("%d年%d月%d日是这年的第%d天\n", year, month, day, total_day(year, month, day));display_day_distance(year, month,day);printf("您输入的日期:%d年%d月%d日",year,month,day);display_holiday(month,day);display_week(year, month, day);//display_month(year, month);}system("pause");return 0;
}
执行后的结果如图:
身为菜鸟的我写了一个日历查询程序相关推荐
- linux怎么日历写入文件夹,用c写的一个日历文件
c写的一个日历文件: /* 该程序在vc中调试运行通过. */ #include #include #include #include typedef struct { unsigned char d ...
- 在纸上写好一个c语言程序后,上机运行的基本步骤为,c基本概念(选择题).docx
PAGE / NUMPAGES 一.单选题 1.下面叙述中正确的是: (A) 在C语言程序中,main()函数必须放在程序的开始位置 (B) 在C语言程序中,要调用的函数必须在main()函数中定义 ...
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
分享下自己写的一个微信小程序请求远程数据加载到页面的代码 1 思路整理 就是页面加载完毕的时候 请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码 我是改的 onload ...
- c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...
求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...
- IOS学习笔记04---编写第一个C语言程序-Hello World
IOS学习笔记04---编写第一个C语言程序-Hello World -------------------------------------------------------- ...
- 手把手教你写第一个C语言程序
C语言是所有编程语言的基础,历经50多年的发展依然被众多编程者使用,那么怎么写C语言程序呢?下面我将从项目的创建开始一步步交大家写第一个C语言程序. 一.C语言项目的创建: C语言是一门编译型语言.所 ...
- 【c】C语言编程写的一个http下载程序
来自: 百度空间-软件工程师 大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的.每次用到FlashGet之类的下载软件下载网页,当用到那个" ...
- 闲来无事,用java写了一个魔方小程序。附源码
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
- java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园
闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...
最新文章
- mysql受影响的行: 0_mysql执行update语句受影响行数是0
- virtualBox中的ubuntu共享文件夹
- [翻译]现代Linux系统上的栈溢出攻击【转】
- 肝货满满!CV学习笔记:入坑必备
- 5-4 是否同一棵二叉搜索树 (25分)
- stub_AccuREST Stub Runner发布
- java setundecorated_java JFrame中与setUndecorated()相关的几个特效
- 卷积神经网络——第一周 卷积神经网络基础——第二部分
- JAVA File转Byte[]
- sql server 分区_使用分区归档SQL Server数据
- [BZOJ4719][P1600][NOIP2016]天天爱跑步[LCA+dfs序+差分]
- 【转】数字图像处理课件-艾海舟
- 来自资深程序员的 3 条锦囊:永远不要辞职,除非……
- 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
- 手机选择之我见——需求分析
- TTL与非门多余的输入端处置办法及其优缺点
- M: Mysterious Conch(哈希表)
- FC4下安装plog快速指南(plog版本:1.01)
- 了解流式加密(CK)(二)
- idea输出中文乱码