c语言实现万年历程序带节日,【C】万年历

用C语言实现一个万年历

一、如何实现一个万年历

①要实现万年历,首先你得知道每年的1月1日是星期几

这里要用到一个数学公式(这里不做数学证明)

w = d+2*m+3*(m+1)/5+y+y/4-y/100+y/400;

②要判断一年是否为闰年,关系到输出2月的天数

③写一个年份数组,然后输出,并且在周六(当然是你的每周最后一天)过后换行

二、代码块

#include

int TheFirstDay(int y) //计算1月1日星期几

{

int m = 13,d = 1;

int w;

y--;

w = d+2*m+3*(m+1)/5+y+y/4-y/100+y/400;

w=w%7+1;

printf("w = %d",w);

return w;

}

int IsLeapYear(int year)//判断是否为闰年

{

return ((year%4==0&&year%100!=0)||year%400==0);

}

void Print_year()//打印一年的日历

{

int year = 0;

int day = 0;

int count = 0;//一行7个,根据count取余来换行

int kong = 0;//月历中第一行空的格数

int month[12]={31,28,31,30,31,30,31,31,30,31,30,31} ;//月份数组,记录每月天数

printf("请输入年份:");

scanf("%d",&year);

count = TheFirstDay(year);//判断是否为闰年

if(IsLeapYear(year)==1)

month[1]+=1;//闰年的二月加一天

for(int i = 0; i<12; i++)//打印每个月的月历。从1月到12月

{

printf("\n========%d月=========",i+1);

printf("\n日 一 二 三 四 五 六\n");

kong = count%7;

while(kong)

{

printf(" ");

kong--;

}

for(int j=1;j<=month[i];j++)

{

printf("%2d ",j);

count++;//每输出一个,count就+1

if(count%7==0)//count到7就输出换行符“\n”

{

printf("\n");

count = 0;

}

}

}

}

int main()

{

Print_year();

return 0;

}

三、运行结果

0818b9ca8b590ca3270a3433284dd417.png

今天是2016.6.12星期日,咦。对啦

-------------------->>>C++实现万年历及查询节日功能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值