C/C++学习实验代码(2)——万年历

运行环境dev C++ 5.1

万年历程序,能够查询到任意年份任意月份的日历表。


#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
    int year,month,d1,week,i;    //对应年月日周,
    int m_1=31,m_2=28,m_3=31,m_4=30,m_5=31,m_6=30,m_7=31,m_8=31,m_9=30,m_10=30,m_11=31,m_12=31;
    //每月的天数
    agn:printf("Enter number of year:");
        scanf("%d",&year);
        printf("Enter number of month:");
        scanf("%d",&month);
        if(year<=0||month<1||month>12)
        {
            printf("Data error!Please again!\n");
            goto agn;    //相当于一个循环,直到输入正确的年月 
         } 
      m_2=28+(year%4==0)-(year%100==0)+(year%400==0);//二月为29天时年份应满足的条件
      year--;
      
      d1=year+year/4-year/100+year/400+1;//加上前面所有闰年多出来的天数 
      for(i=1;i<month;i++)//循环选择前i月的天数 
      switch(i){
          case 1:d1=d1+m_1;break;
          case 2:d1=d1+m_2;break;
          case 3:d1=d1+m_3;break;
          case 4:d1=d1+m_4;break;
          case 5:d1=d1+m_5;break;
          case 6:d1=d1+m_6;break;
          case 7:d1=d1+m_7;break;
          case 8:d1=d1+m_8;break;
          case 9:d1=d1+m_9;break;
          case 10:d1=d1+m_10;break;
          case 11:d1=d1+m_11;break;
          case 12:d1=d1+m_12;break;
      } 
      week=d1%7;//该月份的周数
      printf("%d year %d month:\n",year+1,month);
      printf("  MON  TUE  WEN  THU  FRI  SAT  SUN\n");
      for(i=0;i<week;i++) printf("");//循环打印行数
      if(month==2)
      {
          for(i=week;i<week+m_2;i++)
          {
              printf("%5d",i-week+1);
              if(i%7==6) printf("\n");
          }
      }
      if(month==4||month==6||month==9||month==11)    
      {
      for(i=week;i<week+30;i++)
      {
          printf("%5d",i-week+1);
          if(i%7==6) printf("\n");
      }
        }  
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            for(i=week;i<week+31;i++)
            {
                printf("%5d",i-week+1);
                if(i%7==6) printf("\n");
            }
        }
       
      
}

代码分析:

计算出输入年份的第一天的星期数,据此计算输入月份的第一天的星期数。

用12个变量来存放各月的天数,在判断一年是否为闰年时,用赋值语句代替条件语句,可以加快运算速度,输出日历时可用if(i%7==6)printf("\n");来控制输出的格式。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值