//⑴程序功能描述:输入任意一个年份和月份,按以下格式输出该月份的公历日历。
//要求由程序计算出来该月份的1日是星期几,并用循环控制打印.//打印样例如下:
//2012年日历
//========================================
//9月
//----------------------------------------
//日一二三四五六
//1
//2345678
//9101112131415
//16171819202122
//23242526272829
//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日的天数;
//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
//2345678
//9101112131415
//16171819202122
//23242526272829
//30
//----------------------------------------
#include <stdio.h>
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函数输出日历
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;
for(i=0;i<m-1;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");
}