C/C++语言 小程序 日历(万年历)
来源:互联网 发布:2015年度网络流行语 编辑:程序博客网 时间:2024/06/06 09:45
假期做的,容错性不太好,暂时没啥错误,如果发现错误请留言
#include <stdio.h>#include <math.h>/*********************************************************************************/int leap_year(int year)//判断是否是闰年,1是{if((year%4==0&&year%100!=0)||(year%400==0))return 1;elsereturn 0;}/*********************************************************************************/int fday(int year)//每年的第一天是星期几{double s;s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);return (int)s%7;}/*********************************************************************************/int passd(int mon,int leap)//过了多少天{int sum=0;switch(mon)/*先计算某月以前月份的总天数*/{case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;}if(leap==1&&mon>2)//闰年以后加1,当然要过了二月return sum+1;elsereturn sum;}/*********************************************************************************/void put(int y,int m,int d,int fd,int l,int mon[]){int pd,mfd,i,j;pd=passd(m,l);mfd=pd%7+fd;//每月第一天星期几switch((d-1+mfd)%7)//自己算算{case 0:printf("今天是星期日\n");break;case 1:printf("今天是星期一\n");break;case 2:printf("今天是星期二\n");break;case 3:printf("今天是星期三\n");break;case 4:printf("今天是星期四\n");break;case 5:printf("今天是星期五\n");break;case 6:printf("今天是星期六\n");break;}printf("~~~~~我~~~~~是~~~~~华~~~~~丽~~~~~分~~~~~割~~~~~线~~~~~\n");printf(" %d年%d月份的日历 \n",y,m);printf(" 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");if(mfd>=7)mfd-=7;for(i=0;i<mfd;i++)//日历格式printf(" ");//七个空格i=mfd;for(j=1;j<=mon[m-1];)//从头排着输就行了{printf("%7d",j);j++;if(i==6){printf("\n");i=0;}elsei++;}printf("\n");printf("~~~~~我~~~~~是~~~~~华~~~~~丽~~~~~分~~~~~割~~~~~线~~~~~\n");}/*********************************************************************************/int main(int argc, char* argv[]){int year,mon,leap,fd,day;char a,b;int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};//注意二月天数int lmonth[12]={31,29,31,30,31,30,31,31,30,31,30,31};printf("这是一个能输出日历的程序,输入的格式为xxxx xx xx,输入0时结束。\n");while(1){year=0,mon=0;printf("请输入年月,中间用空格隔开:\n");scanf("%d%c%d%c%d",&year,&a,&mon,&b,&day);/*********************************************************************************/if(year==0)break;leap=leap_year(year);if(leap==1){if(a!=' '||b!=' '||mon<=0||mon>12||day>lmonth[mon-1]||day<1) //关于容错性,有点坑= ={printf("输入有误,请重新输入\n");continue;}printf("本年是闰年\n");printf("本月有%d天\n",lmonth[mon-1]);fd=fday(year);put(year,mon,day,fd,leap,lmonth);}else{if(a!=' '||b!=' '||mon<=0||mon>12||day>month[mon-1]||day<1){printf("输入的格式错误,请重新输入\n");continue;}printf("本年不是闰年\n");printf("本月有%d天\n",month[mon-1]);fd=fday(year);put(year,mon,day,fd,leap,month);}}return 0;}
示例,像这样
1 0
- C/C++语言 小程序 日历(万年历)
- C语言格式化输出日历(万年历)
- C语言年历月历日历(万年历)
- C语言编写万年历小程序
- C语言小项目-万年历
- C语言实现万年历程序
- C语言万年历.c
- 万年历系统(C语言)
- c语言万年历(源代码)
- 简易的万年历程序C语言
- C语言小项目实践——日历程序
- C语言 程序 打印日历
- c语言部分万年历
- C语言实现:万年历
- c语言万年历
- c语言 万年历!!
- C语言万年历
- 万年历C语言代码
- [ 生活 ] 如果你想走得更远!
- android手机获取手机号
- kohana为静态文件提供缓存机制
- 优雅的repo sync自动重试
- 题目1198:a+b
- C/C++语言 小程序 日历(万年历)
- [ javasript ] 从js小问题看大世界。
- Hibernate面试问题集锦: 概述
- postgresql 修改字段类型
- Hibernate使用技巧
- objc.io系列文章中文翻译汇总
- Troubleshooting 11.2 Grid Infrastructure root.sh Issues (Doc ID 1053970.1)
- Spring面试问题集锦
- Servlet学习