万年历的c语言实现源程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
置*/ d=d%7; return d; } void Showdate(ቤተ መጻሕፍቲ ባይዱnt y,int m)/*显示日历*/ { int first; int d; int i,k; first=Getfirstdayintable(y,m);/*得到第一天在日历中的第一 个位置*/ d=Getdaysofmonth(y,m);/*得到这个月的天数*/ k=0; printf("-------------------------------------\n"); printf(" SUN MON TUE WEN THU FRI STA\n"); for(i=1;i<first;i++)/*打印第一天之前的空格*/ { printf(" ");
万年历的 C 语言编程实现源程序: #include<stdio.h> #include<stdlib.h> int Isleapyear(int y)/*判断是否是闰年*/ { if((y%4==0&&y%100!=0)||(y%400==0)) return 1; else return 0; } int Getdaysofmonth(int y,int m)/*确定某个月的天数*/ { int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(Isleapyear(y))/*如果是闰年则 2 月份的天数改变为 29*/ months[2]=29; return months[m]; } int Gettotaldays(int y,int m)/*计算从 1901 年 1 月开始到给定年 月的天数*/ { int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
k++;/*k 用于确定日历中是否回车*/ } for(i=1;i<=d;i++) {
printf("%5d",i);/*每个具体的日期占 5 个字符的宽度*/ k++; if(k==7)/*每行打印 7 个日期数字后回车*/ { printf("\n"); k=0; } } printf("\n-------------------------------------\n"); } int main(){ int y,m; printf("Input year:"); scanf("%d",&y); printf("Input month:"); scanf("%d",&m); Showdate(y,m); return 0; }
int days=0; int i,j; if((Isleapyear(y))) months[2]=29; for(i=1901;i<y;i++)/*从 1901 年 1 月开始计算, 累加 y 年之 前的天数*/ { if(Isleapyear(i)) days+=366; else days+=365; } for(j=1;j<m;j++)/*累加 m 月之后的天数*/ days+=months[j]; return days; } int Getfirstdayintable(int y,int m)/*计算给定年月的第一天在 日历表中的位置*/ { int d; d=Gettotaldays(y,m); d=d+3;/*1901 年 1 月 1 日是星期二,在日历中星期二是第三个位