c语言实现万年历教程

39 篇文章 9 订阅
订阅专栏
4 篇文章 10 订阅
订阅专栏

先来看效果图

功能就是输入一个年月日 输出当月的日历

基本思路

1.打印一个日历的模板出来

2.判断平年还是闰年

3.设置一个时间的初始点 计算距离这一天的天数

首先打印模板

/***********************************************************************头文件*****************************************************/
#include<stdio.h>
/***********************************************************************函数声明***************************************************/
void muban();
void printstar();
/***********************************************************************自定义函数*************************************************/
void muban()
{
    int i;      
	printf("                             万年历\n");
	printstar();
	char week[7][10]={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
	for(i = 0;i<7;i++)
	printf("%10s",week[i]);
}

void printstar()
{
    printf("***********************************************************\n");
}

/***********************************************************************主函数*****************************************************/
int main()
{
  muban();
  return 0;
}

 

大家可以自己用空格调整字的位置

判断闰年和平年具体看这篇文章https://blog.csdn.net/viafcccy/article/details/83628920

我们只需要知道我们输入的日期的月份距离1900年的01月有多少天即可

因为百度上的万年历也是将19000101作为基准点

所以我们也用这一天

因为日历实际上可以看成这样

也就是紧密相连的 所以我们只需要算出当前月份和190001距离天数与7的余数即可知道这个月剩下的日期是多少

所以来计数

	int qiuhe(int year,int month,int day,int run[],int ping[])
	{
		int i,sum=0;
		for(i=2001;i<year;i++)
		{
			int m;//用来标签是闰年还是平年  m==1,就是闰年
			m=leap(i);//函数的调用,函数的嵌套调用
			if(m==1)
			{
				sum=sum+366;
			}
			else
			{
				sum=sum+365;
			}
		}
		//加月份的天数
		for(i=0;i<month-1;i++)
		{
			if(leap(year)==1)
				sum=sum+run[i];
			else
				sum=sum+ping[i];
		}
		return sum;
	}

实际上是加到你输入月份的前一个月

例如 求20181127

实际上算的是20181031到19000101的天数

然后按日历的规律遍历打印出来

 

	void shibiePrint(int sum,int year,int month)
	{
		int yushu,temp,i;
		yushu=sum%7;//得到多余的天数,然后在后一个月份用空格表示出来
		for(i=0;i<yushu;i++)
			printf("          ");//输出空格
		temp=7-yushu;
		if(leap(year)==1)
		{
			for(i=1;i<=run[month-1];i++)//打印31天
			{
				printf("%10d",i);
			if(i==temp||(i-temp)%7==0)
				printf("\n");
			}
			printf("\n");
		}
		else
		{
			for(i=1;i<=ping[month-1];i++)//打印30天
			{
				printf("%10d",i);
			if(i==temp||(i-temp)%7==0)
				printf("\n");
			}
			printf("\n");
		}
	}
	int main()
	{
		scanf("%4d%2d%2d",&year,&month,&day);
		he=qiuhe(year,month,day,run,ping);//调用函数求和
		muban();//调用模板函数,输出模板
		shibiePrint(he,year,month);//进行相应的识别,并输出
		printStar();//打印最后一行的星号
		return 0;
	}

 

最后组合优化后所有的代码如下

/***************************************************************头文件***************************************************/
	#include<stdio.h>
/***************************************************************函数声明*************************************************/
	void printStar();
	void muban();
	int leap(int year);
	int qiuhe(int year,int month,int day,int run[],int ping[]);
	void shibiePrint(int sum,int year,int month);
/***************************************************************全局变量**************************************************/
	int year,month,day,he;
	int run[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
/***************************************************************自定义函数*************************************************/
	void printStar()
	{
		printf("*************************************************************************************\n");
	}
	void muban()
	{
		char weekday[7][10]={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
		int i;
		printf("                                        万年历                                        \n");
	    printStar();
		for(i=0;i<7;i++)
			printf("%10s",weekday[i]);
		printf("\n");
		
	}
	
	//判断闰年和平年
	int leap(int year)
	{		
      int four , hundred , fourhundred;
      scanf("%d",&year);
      four = year % 4;
      hundred = year % 100;
      fourhundred = year % 400;
      if (four == 0 && hundred == 0 && fourhundred == 0)
         return 1;
      else if (four == 0 && hundred != 0 && fourhundred != 0)
         return 1;
      else return 0;
	}
	
	//这点到基本点的求和
	int qiuhe(int year,int month,int day,int run[],int ping[])
	{
		//19000101 星期一
		int i,sum=0;
		for(i=1900;i<year;i++)
		{
			int m;//用来标签是闰年还是平年  m==1,就是闰年
			m=leap(i);
			if(m==1)
			{
				sum=sum+366;
			}
			else
			{
				sum=sum+365;
			}
		}
		//加月份的天数
		for(i=0;i<month-1;i++)
		{
			if(leap(year)==1)
				sum=sum+run[i];
			else
				sum=sum+ping[i];
		}
		return sum;
	}
	void shibiePrint(int sum,int year,int month)
	{
		int yushu,temp,i;
		yushu=sum%7;//得到多余的天数,然后在后一个月份用空格表示出来
		for(i=0;i<yushu;i++)
			printf("          ");//输出空格
		temp=7-yushu;
		if(leap(year)==1)
		{
			for(i=1;i<=run[month-1];i++)//打印31天
			{
				printf("%10d",i);
			if(i==temp||(i-temp)%7==0)
				printf("\n");
			}
			printf("\n");
		}
		else
		{
			for(i=1;i<=ping[month-1];i++)//打印30天
			{
				printf("%10d",i);
			if(i==temp||(i-temp)%7==0)
				printf("\n");
			}
			printf("\n");
		}
	}
	/**********************************************************主函数***************************************************/
	int main()
	{
		scanf("%4d%2d%2d",&year,&month,&day);
		he=qiuhe(year,month,day,run,ping);//调用函数求和
		muban();//调用模板函数,输出模板
		shibiePrint(he,year,month);//进行相应的识别,并输出
		printStar();//打印最后一行的星号
		return 0;
	}

 

 

 

 

C语言实现万年历(附完整源码)
希望我的博客,能帮上你解决学习中工作中所遇到的问题
04-24 626
C语言实现万年历(附完整源码)
C语言实现万年历
12-31
C语言实现万年历显示,按下上下左右按键来更换日期和年份,供大家参考,具体内容如下 #include <stdio> #include <stdlib> #include <time> #include<conio> typedef struct today { int day; int month; int year; } today; int day_cankao[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; char *
C语言日历
最新发布
weixin_64897145的博客
03-04 1239
程序中包括了判断是否是闰年的函数、计算某年某月有多少天的函数、计算某年某月某日是第几天的函数、计算某天是星期几的函数、计算某年某月的上个月有多少天的函数以及打印日历的主函数。* 函数形参:int year, int month,int date。* 函数形参:int year,int month。* 函数功能:某年某月的上个月是多少天。* 函数功能:实现某年是闰年还是平年。* 函数功能:实现某年某月某日是多少天。* 函数功能:实现某年某月有多少天。* 函数功能:某年某月某日是星期几。
C语言实现万年历(含代码详细解读)
often_的博客
11-22 3420
万年历制作详细解读
C语言实现万年历小功能
08-19
主要为大家详细介绍了C语言实现万年历小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C语言实现公历转化为农历
11-02
该资源是C语言的源文件,功能是实现公历转化为农历。VC6.0下编译通过的
C语言实现万年历(附代码)
热门推荐
baiqi123456的博客
08-07 4万+
C语言实现万年历 具备知识 1.公元1年1月1日是星期日。 2.判断平年与闰年的方法。 闰年:普通年需是4的整数倍,世纪年需是400的整数倍。 平年:除去闰年的全是平年。 3.平年2月有28天,闰年2月有29 (特别说明:该日历第一天是按星期日开始的,如下图所示) 检查平年闰年函数 将判断平年闰年的语句封装成函数,便于调用。 int check_year(int year){//检查平年闰年函数 if(year%400==0){ return 1;//闰年返回1 }else{ if(y
c语言万年历查询程序代码,C语言实现万年历程序的代码分享
weixin_32687875的博客
05-17 4910
C语言实现万年历程序的代码分享发布时间:2020-04-27 09:55:52来源:亿速云阅读:795作者:小新今天小编给大家分享的是C语言实现万年历程序的代码,相信很多人都不太了解,为了让大家更加了解C语言实现万年历程序的代码,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。c语言万年历程序代码C语言实现万年历程序的代码如下:#include int year(int y){if (...
C语言实现万年历(附代码) 小白完成的第一个C语言程序,希望大家多多关注,点赞
z2004cx的博客
12-09 1万+
C语言万年历,教你如何去一个万年历。推荐给像我一样的初学者,这是一个可以大家自己动手玩的简单的C程序
万年历c语言
唯一的博客
09-29 1万+
万年历c语言)一、项目背景二、设计目的三、项目功能需求1、获取当前时间2、日期有效性检查3、日期查询4、日期调整5、显示全年日历四、系统的功能结构图五、功能模块介绍1、时间获取模块2、排版输出模块3、功能控制模块4、日历显示模块5、功能选择模块六、详细设计1、主函数2、排版输出模块3、功能控制模块4、日历显示模块5、功能选择模块七、代码 一、项目背景 ​ 万年历是模仿生活中挂历,以电子的形式实现日历的基本功能。可以输出公元元年(即公元1年)1月1日以后任意月份的月历,以及查询指定日期,查看全
C语言万年历
weixin_50648824的博客
06-10 1009
完整代码如下: #include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> #include<conio.h> //非标准库控制台I/O //平年月份表 const int mons[13]={ 0,31,28,31,30,31,30,31,31,30,31,30,31} ; //闰年月份表 const int mons2[13]={ 0,31,...
C语言实现万年历效果
08-25
主要为大家详细介绍了C语言实现万年历效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C语言实现万年历程序
12-31
本文实例为大家分享了C语言实现万年历程序,供大家参考,具体内容如下 #include int year(int y) { if ((y%4==0) && (y0!=0) || y@0==0) return 366; else return 365; } int main() { int y; int i,j,sum=0; int begin,week; int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; scanf(%d,&y); for(i=1;i<y;i++) sum+=year(
C语言一个万年历
weixin_46297850的博客
12-22 442
键盘输入响应:需要通过检测键盘输入来实现不同功能的切换和操作,如上下左右方向键用于查询不同的年份和月份,ESC 键用于退出程序。需要熟悉 C 语言中的键盘输入相关函数,如 kbhit() 和 getch(),并了解它们的用法和返回值。是利用 C 语言中的时间和键盘输入相关的函数,通过对系统时间的获取和处理,以及对键盘输入的响应和处理,来实现一个简单的日历显示和查询功能。需要了解 C 语言中与时间相关的库函数,如 time.h 和 localtime() 函数,并理解其用法和返回值的含义。
C语言课设万年历
2302_76662918的博客
03-30 6288
总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,若是,该年的总天数为366则2月输出为29天,若不是,为365天,2月输出为28天。根据所判断的大月、小月,通过控制符setw控制输出流格式(设置字段宽度),把该日期以前的位置用空格补上,并从该日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。在C++中,考虑到C语言到C++语言过渡的连续性,对结构体进行了扩展,C++的结构体可以包含函数。(1)能够显示该年的日历。
c语言万年历程序
家俊的博客
01-07 2132
这个程序最核心的地方在于计算当前日期是周几,然后才好显示万年历,因为输入只知道月,所以默认是1号。通过这个日期我们就可以计算总天数,通过总天数进行%7运算,就能得到周几。通过这个周几,在结合这个月有多少天,就能输出万年历了。再一个难点就是输出格式。与正常日历显示一致。
C语言实现万年历的代码及思路(详细教程
m0_65835264的博客
07-18 7886
C语言实现万年历的编。 当选择1的时候,输入年,打印输入的这一年12月的日历。 当选择2的时候,输入年-月,打印输入这一年这一月的日历。
C语言实现万年历(附源码分享)
老鼠爱上猪
06-28 1124
C语言实现万年历功能,输入任意年份和月份,回车打印当前月份的月历
利用C语言万年历
09-17
### 回答1: 可以使用 C 语言编万年历程序。首先,需要了解关于日期和时间的相关知识,如公历和农历的转换、闰年的判断等。其次,可以使用 C 标准库中的时间函数,如 time() 和 localtime() 等来获取当前时间。最后,根据获取的时间信息计算并输出日期和事件等信息。 ### 回答2: 编一个 C 语言程序来制作一个万年历是很有趣的任务。为了实现这个目标,我们可以使用一些基本的知识和技巧。 首先,我们需要了解万年历的基本规则和结构。万年历通常以一个年份为单位展示一整年的日历,其中包括每个月的日期和星期几。 接下来,我们可以开始编程序。我们可以使用循环来生成连续的年份,并使用嵌套的循环来生成每个月的日期。 在程序中,我们可以使用一个二维数组来存储整个日历。数组中的每个元素对应一个日期,我们可以将日期和星期几作为数组元素的值。 我们可以使用 C 语言的日期和时间函数来获取当前的年份,并以此作为起点生成万年历。然后,我们可以按照日历的规则,逐个填充数组元素。 为了最大程度地利用 C 语言的功能,我们可以考虑使用结构体来存储日历的信息。结构体可以包含年份、月份和日期等属性。 当程序完成后,我们可以通过输出数组的元素来显示日历。我们可以使用 C 语言的 printf() 函数来格式化和输出日历的内容。 最后,我们还可以添加一些其他的功能,比如用户输入指定年份,并让程序输出该年份的日历。 编万年历的 C 语言程序是一项有趣的挑战。通过掌握 C 语言的基础知识、循环、数组和函数等概念,我们可以创建一个简单而实用的日历程序。不仅可以帮助人们了解日期和星期,还可以展示 C 语言的强大功能。 ### 回答3: 编万年历C语言程序主要涉及以下几个方面的实现: 1. 获取用户输入的年份: 通过使用scanf函数从用户输入中获取年份值。可以使用一个变量来保存用户输入的年份值。 2. 判断输入的年份是否为闰年: 根据闰年的定义,编判断闰年的函数。在函数中判断年份是否能被4整除并且不能被100整除,或者能被400整除。 3. 计算输入年份的1月1日是星期几: 采用基姆拉尔森计算公式来计算:W= (year+(year/4)+(year/400)-(year/100)+1)%7。 其中W是对星期的数字化表示,0表示星期日,1表示星期一,以此类推。 4. 确定输入年份的每个月份的天数: 根据平年和闰年的规则,确定每个月份的天数。通常,1月、3月、5月、7月、8月、10月和12月有31天,4月、6月、9月和11月有30天,而2月平年有28天,闰年有29天。 5. 打印万年历: 利用循环语句和条件判断来输出每个月份的天数和星期几,以创建一个完整的万年历。根据星期的数字化表示,可以使用switch语句来打印出相应的星期几。 以上是一个基本的万年历C语言程序的实现过程。当然,还可以根据需要增加一些其他功能,如输入月份以输出某个具体月份的日历等。具体的实现方式可以根据个人需要进行调整和完善。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • VM虚拟机完美运行macos 211186
  • matlab遗传算法(GA)详解(一)算法入门 157261
  • iphone 爱思刷机 错误无法恢复-2 卡在19%正在恢复 解决方法 111215
  • PID控制参数整定(调节方法)原理+图示+MATLAB调试 98016
  • c语言入门将ASCII码和字符相互转换及其思考 97072

分类专栏

  • k8s 1篇
  • 推荐系统 1篇
  • golong 1篇
  • docker 2篇
  • golang 1篇
  • 跟着鸟哥学linux 7篇
  • matlab 2篇
  • c语言进阶 39篇
  • python入门与实战 43篇
  • 智能算法 26篇
  • 图像处理 10篇
  • java入门 11篇
  • 数据结构 23篇
  • 玩转嵌入式 5篇
  • TensorFlow与深度学习 20篇
  • 图像处理 12篇
  • 个人瞎琢磨 30篇
  • 网络组任务记录 3篇
  • c语言学习历程 50篇
  • 网络基础知识 1篇
  • 各种大牛 2篇
  • linux学习那些事 13篇
  • android瞎搞之路 8篇
  • 51单片机学习之路 6篇
  • 前端 3篇
  • 后端 3篇
  • c语言小应用小游戏 4篇
  • windows应用程序 7篇
  • 数据结构 22篇
  • java入门 12篇
  • py爬虫 5篇
  • 数学建模 10篇
  • py入门 37篇
  • cpp 5篇
  • 数据库 6篇
  • py web 6篇
  • unity5 6篇
  • 人工智能算法 10篇

最新评论

  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    m0_67588800: 积分项的加入没有消除稳态误差?

  • protues仿真8086常见问题

    Aotemanwansui: 第三个错误解决不了的有可能是软件问题,建议可以换更高的版本试试,我之前也是这样,内存啥的我都改过了还是不行,最后安装了更高的版本8.15就好了。

  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    每天早睡一点点: I是减小响应速度吧a

  • x光违禁物品图片 津南大赛【赛场二】 数据集

    彼此沉默: 大佬求一份数据集,有偿2538034458@qq.com

  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    53 Dawns: 这个自己选的啊,选个二阶传函就行

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Istio初探
  • python多版本控制 多个python3版本
  • bootstrap3 使用col栅格实现响应式布局尺寸问题
2022年2篇
2021年19篇
2020年4篇
2019年136篇
2018年95篇

目录

目录

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

聚圣源杭州城站火车站时刻表中华起名全典园林好公司起名字好商贸公司起名字曹操字cctv9纪录片大全去中心化起名四字大全男孩男生八字起名现实中的金山寺在哪里相敬如宾是什么意思安起名河北省委办公厅打牌群起个霸气名字迅雷离线空间乐享视频app下载二级维护激情图区手机号定位软件33d蜜桃成熟时打车软件起名测凶吉我的仙女分身哆啦a梦伴我同行百度云wcdma手机是什么意思叶氏起名起名五行缺什么样千禧曼波起名字的讲究深圳市人力资源和社会保障局淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化