【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++实现万年历及查询节日功能



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

综合实例:51单片机(AT89C52)万年历(温度闹钟年月日时分秒星期)

功能说明: LCD1602液晶显示年、月、日、时、分、秒、星期、温度,三个按键控制时间日期调整以及闹钟设定。   三个按键: 1、“校时”键,每次按下分别对应调整秒、调整分钟、调整小时、调整星...

利用89c51单片机编写可调万年历

最近需要编写我学单片机一个星期以来最大的一个项目,目前感觉相当有挑战性,题目如下: 1)         项目一(远程时钟控制系统) 项目背景:时间对于每个人都很重要,特别是对于高速发展的今天...
  • stweddy
  • stweddy
  • 2012年06月25日 21:12
  • 1813

C实现万年历

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

C程序编写的万年历

  • 2014年12月16日 15:38
  • 586KB
  • 下载

C万年历简单实现

  • 2012年12月10日 11:37
  • 2KB
  • 下载

Java-万年历的DOS控制台打印

import java.util.Scanner; class Calendar { public static void main(String[] args) { Scanner sc...

打印万年历.c

  • 2012年10月24日 17:49
  • 8KB
  • 下载

万年历C代码

  • 2013年03月22日 23:39
  • 54KB
  • 下载

JAVA的图形用户界面练习——万年历的制作

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class calendar extends JFr...
  • wyf2017
  • wyf2017
  • 2017年12月10日 16:53
  • 19

89c51万年历

  • 2013年01月16日 20:47
  • 670KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C】万年历
举报原因:
原因补充:

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