c语言编程输入任意一个年份和月份输出该月份的公历日历
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
百度文库 - 让每个人平等地提升自我! //⑴程序功能描述: 输入任意一个年份和月份,按以下格式输出该月份的公历日历。 // 要求由程序计算出来该月份的1日是星期几,并用循环控制打印. // 打印样例如下: // 2012年日历 // ======================================== // 9月 // ---------------------------------------- // 日 一 二 三 四 五 六 // 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 // ---------------------------------------- //⑵程序版本号: 1.0 创作日期: 2012.5.11 //⑶作者信息描述: 班级:国经贸1105 姓名:陈君君 学号:1111141169 //⑷问题分析描述: 1.判断某一年是否为闰年的条件是:a.年份能否被4整除,但不能被100整除;b.年份能被400整除; // 2.公元1年到year年共有(y-1)年,其中天数为:(y-1)*365+闰年的个数. //⑸算法设计描述:1.根据year,计算2月份的天数; // 2.计算year年1月1日到1年1月1日中间闰年的个数; // 3.计算year年1月1日到1年1月1日的天数,存入变量d1; // 4.计算year年month月1日到year年1月1日的天数,存入变量d2; // 5.计算year年month月1日是星期几,存入变量weekday; // 6.计算year年month月的天数,存入变量d3. //⑹关键语句注释说明:1.recount为year年1月1日到1年1月1日中间闰年的个数; // 2.d1为year年1月1日到1年1月1日的天数; 1 百度文库 - 让每个人平等地提升自我! // 3.d2为year年month月1日到year年1月1日的天数; // 4.weekday为year年month月1日是星期几; // 5.d3为year年month月的天数. //⑺调试运行过程中出现的错误及改正方法: “recount”错写为“rcount”,应写为“recount” //⑻输入数据样例:2012 9 // 输出数据样例: // 2012年日历 // ======================================== // 9月 // ---------------------------------------- // 日 一 二 三 四 五 六 // 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 // ---------------------------------------- #include void main() { int y,m,i,d1,d2,d3,w,n=0,recount=0; int t[]={31,28,31,30,31,30,31,31,30,31,30,31}; //输入year年和month月 printf("请输入年和月:"); scanf("%d%d",&y,&m); //根据year,计算2月份的天数 if(y%4==0&&y%100!=0||y%400==0) t[1]=29; //计算year年1月1日到1年1月1日中间闰年的天数 recount=(y-1)/4-(y-1)/100+(y-1)/400; //计算year年1月1日到1年1月1日的天数,存入变量d1 d1=(y-1)*365+recount; //计算year年month月1日到year年1月1日的天数,存入变量d2 d2=0; 2 百度文库 - 让每个人平等地提升自我! for(i=0;i d2+=t[i];
//计算year年month月1日是星期几,存入变量weekday w=(d1+d2+1)%7;
//计算year年month月的天数,存入变量d3 d3=t[m-1]; //输出“表头”
printf("%23d年日历\n",y);
printf("===================================================\n"); printf("%23d月\n",m);
printf("---------------------------------------------------\n"); printf("日\t一\t二\t三\t四\t五\t六\n"); //输出1日前的空格 printf("\t");
//输出所有日期,7个一行 for(i=1;i<=d3;i++) {
printf("%d\t",i); if((i+w)%7==0) printf("\n"); }
printf("\n--------------------------------------------------\n"); }
3
本文来源:https://www.wddqw.com/doc/85caec489c3143323968011ca300a6c30d22f12b.html