只需输入年份的打印日历
这是对程序-->一个日历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; }
![](http://hi.csdn.net/attachment/201203/9/0_1331302752RYNd.gif)