本程序可完成打印年历,月历,以及查询两个日期间相距多少天,以及查询日期是星期几。代码如下:

#include<stdio.h>//设计界面函数
int UI()
{int n;printf("------------------------\n");printf("-----欢迎使用万年历-----\n"); printf("|      1.查询年历      |\n");printf("|      2.查询月历      |\n");printf("|   3.查询距今多少天   |\n");printf("|        4.退出        |\n");printf("------------------------\n");printf("请输入您想使用功能的数字: ") ;while(1){scanf("%d",&n);if(n==1||n==2||n==3||n==4){return n;}else{printf("输入的数字有误,请重新输入\n");}}
} //判断润平函数
int Judge(int year)
{if(year%400==0||(year%4==0&&year%100!=0))    //闰年 return 0;else                                        //平年 return 1;
}//功能1函数
void Fac1()
{int Run[12]={31,29,31,30,31,30,31,31,30,31,30,31};int Leap[12]={31,28,31,30,31,30,31,31,30,31,30,31};char *Month[]={"January","February","March","April","May","June","July","August","September","October","November","December"};char *Week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};int year=0;int day=0;int flag=0;printf("请输入年份:");scanf("%d",&year);flag=Judge(year);int tool=0,weekd=0;tool=year-1+(year-1)/4-(year-1)/100+(year-1)/400+1;        //公式计算 weekd=tool%7;                                             //计算星期几int i=0,j=0;for(i=0;i<12;i++){printf("\n");printf("%s\n",Month[i]);            //打印月份printf("===================================================\n");for(j=0;j<7;j++){printf("%s\t",Week[j]);        //打印星期}printf("\n");for(int k=0;k<weekd;k++){printf("   \t");               //打印日期前的空格 }for(day=1;day<32;day++){printf("%d\t",day);if((weekd+day)%7==0){printf("\n");//每行七个日期}if(flag==0)//是闰年{if(i==0 && day==31) break;//控制每月的天数else if(i==1 && day==29) break;else if(i==2 && day==31) break;else if(i==3 && day==30) break;else if(i==4 && day==31) break;else if(i==5 && day==30) break;else if(i==6 && day==31) break;else if(i==7 && day==31) break;else if(i==8 && day==30) break;else if(i==9 && day==31) break;else if(i==10 && day==30) break;else if(i==11 && day==31) break;}else//不是闰年{if(i==0 && day==31) break;else if(i==1 && day==28) break;else if(i==2 && day==31) break;else if(i==3 && day==30) break;else if(i==4 && day==31) break;else if(i==5 && day==30) break;else if(i==6 && day==31) break;else if(i==7 && day==31) break;else if(i==8 && day==30) break;else if(i==9 && day==31) break;else if(i==10 && day==30) break;else if(i==11 && day==31) break;}}weekd=(weekd+day)%7;//计算下一个月第一天是星期几printf("\n");} printf("\n");
} //功能2函数
void Fac2()
{int Run[12]={31,29,31,30,31,30,31,31,30,31,30,31};int Leap[12]={31,28,31,30,31,30,31,31,30,31,30,31};char *Month[]={"January","February","March","April","May","June","July","August","September","October","November","December"};char *Week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};int year,month;printf("请输入年,月:");scanf("%d%d",&year,&month);int flag=0;flag=Judge(year);printf("\n");int Mark=0;for(int i=0;i<month-1;i++){if(flag==0)//是闰年{Mark+=Run[i];}else//不是闰年{Mark+=Leap[i];}}int N=0;N=year-1+(year-1)/4-(year-1)/100+(year-1)/400+Mark+1; int weekd=0;weekd=N%7;printf("%s\n",Month[month-1]);//输出月份printf("===================================================\n");for(int j=0;j<7;j++){printf("%s\t",Week[j]);//输出星期}printf("\n");for(int k=0;k<weekd;k++){printf("   \t");//输出日期}for(int day=1;day<32;day++){printf("%d\t",day);if((weekd+day)%7==0){printf("\n");//每行七个日期}if(flag==0)//是闰年{if(month==1 && day==31) break;else if(month==2 && day==29) break;else if(month==3 && day==31) break;else if(month==4 && day==30) break;else if(month==5 && day==31) break;else if(month==6 && day==30) break;else if(month==7 && day==31) break;else if(month==8 && day==31) break;else if(month==9 && day==30) break;else if(month==10 && day==31) break;else if(month==11 && day==30) break;else if(month==12 && day==31) break;}else//不是闰年{if(month==1 && day==31) break;else if(month==2 && day==28) break;else if(month==3 && day==31) break;else if(month==4 && day==30) break;else if(month==5 && day==31) break;else if(month==6 && day==30) break;else if(month==7 && day==31) break;else if(month==8 && day==31) break;else if(month==9 && day==30) break;else if(month==10 && day==31) break;else if(month==11 && day==30) break;else if(month==12 && day==31) break;}}printf("\n\n");
} struct date
{int yr;int mon;int day;
};typedef struct date Date;void Fac3()      //两天之间差多少天
{int Run[12]={31,29,31,30,31,30,31,31,30,31,30,31};int Leap[12]={31,28,31,30,31,30,31,31,30,31,30,31};Date one,two;Date str,end;printf("请输入现今日期:(年 月 日)\n");scanf("%d %d %d",&one.yr,&one.mon,&one.day);printf("请输入查询日期:(年 月 日)\n");scanf("%d %d %d",&two.yr,&two.mon,&two.day);if((one.yr<two.yr)||((one.yr==two.yr)&&(one.mon<two.mon))||(((one.yr==two.yr)&&(one.mon==two.mon)&&(one.day<two.day))))  //保证日子小的年份放在str,大的放在end {str=one;     //str存的小的 end=two;     //end存的大的·   }else{str=two;end=one;}int n=0;     //计数int u=0;if(str.yr<end.yr)                          //如果str年小 {for(int im=1;im<=str.mon;++im)           {if(im==str.mon)u+=str.day;else{if(Judge(str.yr))u+=Run[im-1];else u+=Leap[im-1];}}for(int yr=str.yr;yr<=end.yr;++yr){int judge=Judge(yr);    //判断闰年if(yr==end.yr){for(int mon=1;mon<=end.mon;++mon){if(mon==end.mon){n+=end.day;         }else{if(judge){n+=Run[mon-1];}else n+=Leap[mon-1];}}}else{int ny=judge?365:364;n+=ny;}}n=n-u+1;}else if(str.mon<end.mon){int judge=Judge(str.yr);    //判断闰年for(int mon=str.mon;mon<=end.mon;++mon){if(mon==end.mon){n+=end.day;}else{if(judge){n+=Run[mon-1];}else n+=Leap[mon-1];}}n=n-str.day;}else{n=end.day-str.day;}int D=0,W=0;int judge=Judge(two.yr);if(judge==0){for(int imonth=1;imonth<two.mon;imonth++)D+=Run[imonth-1];D+=two.day;}else{for(int imonth=1;imonth<two.mon;imonth++)D+=Leap[imonth-1];D+=two.day;}W = two.yr-1+ (two.yr-1)/4- (two.yr-1)/100 + (two.yr-1)/400 + D; W%=7;if(W==0)W=7;printf("距今 %d 天,是星期%d\n",n,W);
}void Fac4()
{   printf("欢迎再次使用!\n");
}//进入功能函数
void Go(int n)
{if(n==1)Fac1();if(n==2)Fac2();if(n==3)Fac3();if(n==4)Fac4();
} int main()
{int n=0;while(n!=4){n=UI();Go(n);}return 0;
}

根据日期计算星期几的公式:
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D

Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。

万年历小程序(黑框)相关推荐

  1. 微信小程序提示框提示

    微信小程序提示框很常见,有的项目弹出提示选择关闭的时候需要不再弹出,清理缓存的时候才弹出. var s = wx.getStorageSync('sh')if (s == '') {// s= tru ...

  2. 小程序搜索框_微信小程序搜索及优化相关知识科普

    生活中我们常常会用到微信小程序,但很多人不知道该如何搜索.找到小程序:而有些已经做了自己的小程序的商家,也不懂怎么提升自己的微信小程序搜索效果.所以下面就跟大家科普下这两个问题. 1.怎么搜索微信小程 ...

  3. 微信小程序选择框问题 小程序picker点击显示object range-key=这里写要显示的字段

    微信小程序选择框问题 小程序picker点击显示object range-key="这里写要显示的字段" <picker bindchange="bindClass ...

  4. 程序黑框中出现:(路径)用作为当前目录的以上路径启动了 CMD.EXE。 UNC 路径不受支持,默认值设为 Windows 目录。

    程序黑框中出现:(路径)用作为当前目录的以上路径启动了 CMD.EXE. UNC 路径不受支持,默认值设为 Windows 目录. 虚拟机运行opencv,程序黑框中出现:(路径)-用作为当前目录的以 ...

  5. 2021最新版万年历小程序搭建教程

    更新: 2.0新增星运赚任务系统,用户自然裂变更强,用户留存率更高,流量主收益更好 增加小程序原生广告位,经过内部优化后的流量主收益更好,适配广告更广泛 新增小程序开屏广告,流量主收益提升百分之20以 ...

  6. 适合超级新手的万年历小程序

    Java swing实现的万年历小程序 适合超级超级新手 要求:实现输入年份可是实现该年每个月份的日期,比较简单适合新手 该代码只用到了三个类:Main用于启动 Frame实现界面渲染 Bean 实现 ...

  7. 微信小程序input框中加入小图标的实现方法

    最近入坑小程序,要求在小程序的输入框中展示一个小图标,页面如下: 然后按照,html页面中的做法,在input框中添加了background-image属性,出乎意料的事,小程序报了下边这样一个错误: ...

  8. 微信小程序-气泡框 Popover

    写在前面 记录基于微信小程序-气泡框实现中产生的问题及思考 问题截图 问题描述 模拟器显示正常,但在真机上点击后,气泡框的箭头并没有消失,且点击同一级别区域,能利用覆盖消除箭头.[是不是一个很可爱的b ...

  9. c语言小程序 万年历,C语言实现万年历小程序

    这篇文章主要为大家详细介绍了C语言实现万年历小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 一.杂谈 大一学了C之后一直困惑,C到底怎么用?它不像HTML那么直观 ...

  10. 小程序搜索框_微信怎么搜索小程序?小程序能有什么用?

    微信小程序已经发布了三年多,现在很多人在日常生活中离不开它.但是,新手经常会遇到这种情况:使用小程序后,他们找不到它:如果他们想再次使用它,他们不知道在哪里可以找到它.因此,以下内容将告诉您如何查找小 ...

最新文章

  1. 关于SSH远程连接报错
  2. 东大20春计算机应用基础在线作业1答案,东大20春学期《计算机应用基础》在线平时作业1答案...
  3. Android实现导航菜单左右滑动效果
  4. 【数理知识】《矩阵论》方保镕老师-第5章-矩阵微积分及其应用
  5. 与张小龙同行:微信小程序开发
  6. 印度初创公司开发了下一代区块链网络安全解决方法
  7. 分布式的客户端-服务器结构_MMORPG游戏服务器技术选型参考
  8. 基于开源流程引擎Activiti5的工作流开发平台BPMX3
  9. 解密ControlRotation与ActorRotation
  10. BDD 与DSL 入门
  11. Replace Type Code with Class(以类取代类型码)
  12. oracle并行parallel update两张表_Oracle与并行性 parallel
  13. python变量的使用_python – 如何在变量中使用冒号(:)
  14. 诛仙服务器列表文件,诛仙云服务器
  15. linux程序流量平滑,Linux下按程序查实时流量 network traffic(示例代码)
  16. CMOS密码清除方法
  17. sql优化工具explain的使用
  18. 医学案例统计分析与SAS应用--自学笔记
  19. ImageNet和COCO数据集分类
  20. iOS底层原理之架构设计

热门文章

  1. 超声波技术构建触摸界面
  2. 压缩人工智能的数据值
  3. 多篇开源CVPR 2020 语义分割论文
  4. Glide的缓存机制
  5. 2021年大数据ELK(八):Elasticsearch安装IK分词器插件
  6. Django高级管理静态文件和中间件5.1
  7. C++ while 循环与 do...while 循环
  8. HarmonyOS 使用DevEcoStudio创建一个xml布局以及引用布局
  9. Failed to open zip file. Gradle‘s dependency cache may be corrupt (xx)
  10. java流程控制语句