只需输入年份的打印日历

这是对程序-->一个日历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;

}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值