这是对程序-->一个日历C程序的改进,没有了day_code &leap_year code的限制
可以直接输入年份打印出年历
/*Calendar1
打印出某年的日历,由用户只需输入年份
@author Jeff Chen
@version 1.1 date:2012-03-09
*/
#include<stdio.h>
int main()
{
int day_code;
int leap_year;
int year;
printf("Enter the year you want to print:\n");
scanf("%d",&year);
day_code=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
leap_year=((year%4)==0&&(year%100)!=0||(year%400)==0)?1:0;
int days_in_month;
int month;
int day;
for(month=1;month<=12;month++)
{
switch(month)
{
case 1:
printf("\n\n\tJanuary");
days_in_month=31;
break;
case 2:
printf("\n\n\tFebruary");
days_in_month=leap_year ? 29:28;
break;
case 3:
printf("\n\n\tMarch");
days_in_month=31;
break;
case 4:
printf("\n\n\tApril");
days_in_month=30;
break;
case 5:
printf("\n\n\tMay");
days_in_month=31;
break;
case 6:
printf("\n\n\tJune");
days_in_month=30;
break;
case 7:
printf("\n\n\tJuly");
days_in_month=31;
break;
case 8:
printf("\n\n\tAugust");
days_in_month=31;
break;
case 9:
printf("\n\n\tSeptember");
days_in_month=30;
break;
case 10:
printf("\n\n\tOctober");
days_in_month=31;
break;
case 11:
printf("\n\n\tNovember");
days_in_month=30;
break;
case 12:
printf("\n\n\tDecember");
days_in_month=31;
break;
}
//输出星期
printf("\n\nSun Mon Tue Wed Thu Fri Sat\n");
for(day=1;day<day_code*5+1;day++)
{
printf(" ");
}
for(day=1;day<=days_in_month;day++)
{
printf("%2d ",day);
if((day+day_code)%7>0)
printf(" ");
else
printf("\n");
}
//设置下一个星期的星期代码
day_code=(day_code+days_in_month)%7;
}
return 0;
}
