C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)

C语言万年历
很多人都有做过万年历,于是想自己写一个。
万年历是我们日常生活中经常用到的一种非常实用的工具。
由于工作繁忙,人们常常忘记某一天是星期几,想要看看某个月的日历,或者一整年的。我把自己的想法实现如下:
1、任意年份日历的整体输出;
2、任意年任意月日历的单独输出;
3、任意年月日 查询星期几;
4、按任意键 退出;
5、循环查询,直到选择退出;

ps:
以上星期几的推算只适合于1582年10月15日之后的情形(当时的罗马教皇将恺撒大帝制订的儒略历修改成格里历,即今天使用的公历)。
先来一些运行截图:

输入错误
C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第1张图片
输出全年的日历
C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第2张图片C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第3张图片C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第4张图片C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第5张图片
C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第6张图片
任意年任意月日历的单独输出
C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第7张图片
**任意年月日 查询星期几 **
C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第8张图片
退出程序

C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新)_第9张图片

ok 截图展示完了

双手奉上 全部代码

算法实现还是挺容易的,调整格式,修改代码很累人!

2019年6月22日
重新调整输出格式(当月1日不是星期日的时候对齐问题,月末不是星期6末尾#对齐);
调整查询某月日历时输入方式并对输入月份数值做判断;
调整循环方式;
2020年3月19日
修改星期显示,调整函数位置

修改后代码如下:

/*万年历输出小程序*/
#include "stdio.h"
#include "stdlib.h"
int dateofmonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
                        {31,29,31,30,31,30,31,31,30,31,30,31}};
char *month1[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char *month2[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
//char *week[7]={"sunday","monday","tuesday","wednesday","thursday","friday","saturday"};
char *week[7]={"sun","mon","tue","wed","thu","fri","sat"};
/*函数声明*/
int pyear(int n);
int xingqi(int year,int month,int data );
void rili(int year,int month_a,int month_b);
void xq();

main()
{
	int i,year,month;
	printf("*********万年历小程序*********\n\n");
	printf("请选择您要执行的操作(0-3)\n");
	printf("\n0:退出\n1:查询某年日历\n2:查询某月日历\n3:查询某日星期\n");
	printf("\n您选择要执行的操作是: ");
	scanf("%d",&i);
	printf("\n");
	switch(i)
	{
		case 0: exit(i);break;
		case 1: printf("请输入要查询的年份:\n\n");
				scanf("%d",&year);
				rili(year,1,12);break;
		case 2: printf("请输入要查询的年份月份(2019 6):\n\n");
				scanf("%4d%2d",&year,&month);
				if(month>0&&month<12)rili(year,month,month);
				else {printf("\n\n\t输入错误,请重新输入\n\n\n\n\n");
				main();
				}
				break;				
		case 3: xq();break;
		default:
			printf("\n\n\t输入错误,请重新输入\n\n\n\n");
		main();
}
}
int pyear(int n)
{	if(n%4==0&&n%100!=0||n%400==0)return 1;
	else return 0;
}
int xingqi(int year,int month,int data )//返回某年某月某日是星期几
{	int d=0,i,j;
	i=pyear(year);
	for(j=0;j0)
		{for(n=0;n

你可能感兴趣的:(C语言万年历 查询年历 月历 星期(日期)循环查询(2020 3 19更新))