海纳网站建设外链收录网站
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、打印月历
- 二、实现代码
- 三、运行结果
- 总结
前言
设计程序,实现年、月由用户输入,输出一个如下形式的闰年日历:
.
(提示:
可按公式 iWeek = ((c/4)-2*c+y+(y/4)+(26*(iMonth+1)/10)+iDay-1)%7
将年(iYear)/月(iMonth)/日(iDay)换算成星期(iWeek)。
公式中,
c=iYear/100, c>15;y=iYear%100;
当 iMonth为1时,iYear 改为 iYear-1,iMonth 改为 13;
当 iMonth为2时,iYear 改为 iYear-1,iMonth 改为 14;
当 iWeek<0时,iWeek 改为 iWeek+7;
iWeek 为 0 表示星期日)
2.实现代码
代码如下(示例):
#include<stdio.h>int n,c,y,iWeek,iYear,iDay,iMonth,maxday,j;int main(){scanf("%d %d",&iYear,&iMonth);printf("日 一 二 三 四 五 六\n");switch(iMonth){case 4:maxday = 30;break;case 6:maxday = 30;break;case 9:maxday = 30;break;case 11:maxday = 30;break;case 2:if(iYear%4==0&&iYear%100!=0){maxday = 29;}else{maxday = 28;}break;default:maxday= 31;break;}//计算当月yihaoc = iYear/100;y = iYear%100;iDay = 1;iWeek = ((c/4)-2*c+y+(y/4)+(26*(iMonth+1)/10)+iDay-1)%7;if(iWeek<0){iWeek+=7;}int i;for(i=0;i<iWeek;i++){printf("%2s "," ");//iweek前面放空格 }for(i=iWeek;i<=6;i++){printf("%2d ",++j);if(i==6){i = -1;printf("\n");}if(j>=maxday){break;}}return 0;
})
三、运行结果
2022 10
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
总结
熟悉掌握Switch--case用法、循环嵌套