【C】万年历

原创 2016年06月02日 12:42:23

用C语言实现一个万年历

一、如何实现一个万年历

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

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

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

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

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

二、代码块

#include<stdio.h>
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;
}

三、运行结果


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



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



版权声明:本文由 皓皓松博客 创作,转载请附带链接,有问题欢迎交流。

C实现万年历

要求:输入年份输出这一年的日历 注意:公元1900年一月一日是星期一,这一年是平年 思路:获取输入的年份y,首先获取从公元1900年到(y-1)年 的天数,然后获得该年份的第一天是星期几,进行输...
  • hongbochen1223
  • hongbochen1223
  • 2015年04月20日 01:43
  • 2007

万年历的C语言写法

用C语言写万年历。输入年月 输出本月的日历。
  • wang_huizhang
  • wang_huizhang
  • 2017年01月06日 14:01
  • 882

C语言实现万年历

C语言实现万年历 摘要:介绍使用C语言实现万年历的打印与输出。 关键字:C;万年历;打印与输出 一 引言 万年历是我们日常生活中经常用到的一种非常实用的工具。由于工作繁忙,人们常常忘记...
  • u010568345
  • u010568345
  • 2014年07月15日 00:04
  • 2465

简易的万年历程序C语言

#include #include int boolen(int y) { int c; if((y%400==0)||((y%4==0)&&(y%100!=0))) c=1; ...
  • Wsky51
  • Wsky51
  • 2017年06月08日 22:46
  • 406

万年历(C语言代码实现)

学了一个学期的C,由于C语言基础不扎实,所以重新学习了一次。参考了一部分网上代码,按照框架思路自己再编写了程序代码。只是简单万年历功能的实现。一些不足之处,还请多多包涵~~ #inclu...
  • Pason_PC
  • Pason_PC
  • 2015年09月09日 23:06
  • 3739

C语言实现万年历程序

C语言实现万年历程序 #include int year(int y) { if ((y%4==0) && (y%100!=0) || y%400==0) return 366; els...
  • iamzxf
  • iamzxf
  • 2014年10月26日 11:30
  • 16488

c语言万年历(源代码)

/** *c语言万年历,dev c++运行通过 *参数输入格式eg: *显示这一天是星期几:2013/01/01  2013.01.01  *显示这个月的整个日历:2013.01.  2013...
  • renyuzhuo0
  • renyuzhuo0
  • 2013年07月29日 00:02
  • 2277

C语言实现:万年历

       经过近这几天的努力,终于写完了这个"万年历"挖年里的程序了,共享一下  [需求]    请打印出任意年份的日历[代码][输出] 12345678910111213141516171819...
  • asiainfolf
  • asiainfolf
  • 2010年08月29日 04:19
  • 6878

用C语言写的万年历---亲手写的。好累哦

#include #include #include #define str "   SUN   MON  TUE   WED   THU   FRI   SAT   "void menu();   ...
  • qq_17365907
  • qq_17365907
  • 2017年03月26日 11:24
  • 719

C语言编写万年历

上一次的万年历在后来的测试发现当1号是周日时,无法正确输出,后来加了语句: if(week == 0)      week=7; 并且在确定当前日期到1900年1月1日的方法进行改进,不在采用f...
  • rz191162792
  • rz191162792
  • 2016年07月19日 21:41
  • 755
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C】万年历
举报原因:
原因补充:

(最多只允许输入30个字)