身为菜鸟的我写了一个日历查询程序

这个程序能完成的功能:
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;
}

执行后的结果如图:

身为菜鸟的我写了一个日历查询程序相关推荐

  1. linux怎么日历写入文件夹,用c写的一个日历文件

    c写的一个日历文件: /* 该程序在vc中调试运行通过. */ #include #include #include #include typedef struct { unsigned char d ...

  2. 在纸上写好一个c语言程序后,上机运行的基本步骤为,c基本概念(选择题).docx

    PAGE / NUMPAGES 一.单选题 1.下面叙述中正确的是: (A) 在C语言程序中,main()函数必须放在程序的开始位置 (B) 在C语言程序中,要调用的函数必须在main()函数中定义 ...

  3. 分享下自己写的一个微信小程序请求远程数据加载到页面的代码

    分享下自己写的一个微信小程序请求远程数据加载到页面的代码 1  思路整理 就是页面加载完毕的时候  请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码  我是改的 onload ...

  4. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  5. IOS学习笔记04---编写第一个C语言程序-Hello World

    IOS学习笔记04---编写第一个C语言程序-Hello World --------------------------------------------------------         ...

  6. 手把手教你写第一个C语言程序

    C语言是所有编程语言的基础,历经50多年的发展依然被众多编程者使用,那么怎么写C语言程序呢?下面我将从项目的创建开始一步步交大家写第一个C语言程序. 一.C语言项目的创建: C语言是一门编译型语言.所 ...

  7. 【c】C语言编程写的一个http下载程序

    来自: 百度空间-软件工程师 大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的.每次用到FlashGet之类的下载软件下载网页,当用到那个" ...

  8. 闲来无事,用java写了一个魔方小程序。附源码

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  9. java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

最新文章

  1. mysql受影响的行: 0_mysql执行update语句受影响行数是0
  2. virtualBox中的ubuntu共享文件夹
  3. [翻译]现代Linux系统上的栈溢出攻击【转】
  4. 肝货满满!CV学习笔记:入坑必备
  5. 5-4 是否同一棵二叉搜索树 (25分)
  6. stub_AccuREST Stub Runner发布
  7. java setundecorated_java JFrame中与setUndecorated()相关的几个特效
  8. 卷积神经网络——第一周 卷积神经网络基础——第二部分
  9. JAVA File转Byte[]
  10. sql server 分区_使用分区归档SQL Server数据
  11. [BZOJ4719][P1600][NOIP2016]天天爱跑步[LCA+dfs序+差分]
  12. 【转】数字图像处理课件-艾海舟
  13. 来自资深程序员的 3 条锦囊:永远不要辞职,除非……
  14. 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
  15. 手机选择之我见——需求分析
  16. TTL与非门多余的输入端处置办法及其优缺点
  17. M: Mysterious Conch(哈希表)
  18. FC4下安装plog快速指南(plog版本:1.01)
  19. 了解流式加密(CK)(二)
  20. idea输出中文乱码

热门文章

  1. VANT标签栏样式改变
  2. 跨境电商行业:现在新卖家入驻亚马逊还有机会吗?自发货模式又如何?
  3. echarts(JavaScript)加载json的辛酸史
  4. 转--Python安全测试工具合集
  5. [附源码]Python计算机毕业设计宠物寄养预约系统
  6. 剑侠情缘网络版2一键架设教程
  7. 第一章_01_JAVA概述
  8. 秘密的牛奶运输 题解
  9. 存储公链的存储共识机制
  10. 如何成为部门负责人?