电子万年历

看到网上有关历法的一些资料,于是自己动手写一个电子万年历,虽然功能还不是很强,但是实现了万年历的基本功能,由于写的很粗糙,所以Bug在所难免!打算以后再慢慢的更新,并强化功能。
程序如下:

/*程序名:电子万年历*/

/*功能:可以查出几乎任意一年的日历*/

#include<stdio.h>
#include<time.h>

#define LeapYear(y) ((y%4==0)&&(y%100!=0)||(y%400==0))

int getdays(int year, int month);
int getweek(int year, int month, int date);
void display(void);

int main()
{
  display();
  return 0;
}

int getdays(int year, int month)
{
  int days[]={31,28,31,30,31,30,31,31,30,31,30};
  if(LeapYear(year)&&month==2)
    return 29;
  else
    return days[month-1];
}

int getweek(int year, int month, int day)
{
  if(month==1||month==2){
    month+=12;
    --year;
  }
  return (day+1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}

void display(void)
{
  int curYear, curMonth, curDay, curWeek, curDays, weekone, i;
  time_t t;
  struct tm *ptr;

  char *weekday[]={"Sun","Mon","Tue","Wen","Thu","Fri","Sat"};
  char *monthday[]={"Jan","Feb","March","April","May","June","July","Aug","Sep","Oct","Nov","Dec"};

  clrscr();

  t=time(NULL);
  ptr=localtime(&t);
  curYear=ptr->tm_year+1900; curMonth=ptr->tm_mon+1; curDay=ptr->tm_mday; curWeek=ptr->tm_wday;
  curDays=getdays(curYear,curMonth);
  weekone=getweek(curYear,curMonth,1);

  printf("          %4d-%2d-%2d/n", curYear, curMonth, curDay);
  for(i=0;i<7;i++) printf("%4s", weekday[i]);
  printf("/n");
  for(i=1;i<weekone+1;i++) printf("    ");
  for(;i<curDays+weekone;i++){
     printf("%4d",i-weekone);
     if(i%7==0) printf("/n");
  }

  printf("/nToday is %s %s %d %d/n", weekday[curWeek],monthday[curMonth-1],curDay,curYear);
  getch();
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值