C语言实现的简易万年历1.0版

这个万年历很简单,只需要寻找已知的某一天日历,作为参照,然后计算要查找的当天与已知日历之间相差的天数,即可推算出当天是星期几,因此只需写一个计算天数的简单算法就可以了。

代码在vs2013上测试运行通过。

#include<stdio.h>
#include<stdlib.h>
int year, month, day;
//闰年
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 };
//星期
char weekday[7][10] = { "一", "二", "三", "四", "五", "六", "日" };
//打印
void printStar()
{
	printf("**************************************************\n");
}
//打印抬头
void printBegin()
{
	printf("\t\t万年历1.0版\n");
	printStar();
	//打印星期
	for (int i = 0; i < 7; i++)
	{
		printf("%s\t",weekday[i]);
	}
	printf("\n");
}
//打印下面的日期
//先判断当前年份是平年还是闰年
int leap(int year)
{
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		return 1;      //返回1代表闰年
	}
	else if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0)
	{
		return 1;     //返回1代表闰年
	}
	else
	{
		return 0;  //返回0代表平年
	}
}

//日历从1990年开始,1990.01.01是星期一
//星期几怎么来的?第一次算星期的时候开始作比较
//计算year距离1900相差多少天
int  daySum(int year,int month,int day,int run[],int ping[])
{
	//参照物  1990.01.01是星期一
	int i, sum = 0;
	//计算年份的天数:闰年加366,平年加365
	for (i = 1900; i < year; i++)
	{
		if (leap(i)==1)
		{
			sum += 366;
		}
		else
		{
			sum += 365;
		}
	}
	//计算月份的天数
	for (i = 0; i < month - 1; i++)
	{
		if (leap(year) == 1)
		{
			sum += run[i];
		}
		else
		{
			sum += ping[i];
		}
	}
	return sum;

}

//打印日历
void printData(int sum, int year, int month)
{
	int result, temp, i;   //result代表每个月之前的空格
	result = sum % 7;    //每个月之前的空格,就是余数  123456%7---》0--6
	//当前月份空余的天数用空格表示
	for (i = 0; i < result;i++)
	{
		printf("\t");     // 与打印的星期排头对齐
	}
	temp = 7 - result;    //开始打印一号
	if (leap(year) == 1)
	{
		//月份数组下标,从0开始,但是月份从一开始
		for (i = 1; i <= run[month - 1]; i++)
		{
			printf("%d\t",i);
			//换行处理
			if (i == temp || (i - temp) % 7 == 0)
			{
				printf("\n");
			}

		}
		printf("\n");
	}
	else
	{
		//月份数组下标,从0开始,但是月份从一开始
		for (i = 1; i <= ping[month - 1]; i++)
		{
			printf("%d\t", i);
			//换行处理
			if (i == temp || (i - temp) % 7 == 0)
			{
				printf("\n");
			}
		}
		printf("\n");
	}
}


int main()
{
	printf("请输入年  月  日:\n");
	scanf_s("%d%d%d",&year,&month,&day);
	int sum = daySum(year, month, day, run, ping);
	printBegin();
	printData( sum, year, month);

	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述
在我的资源下载里有高级版本,运用了贴图技术,让界面看起更美观,以及加载了背景音乐播放,打开日历音乐自动播放。点击查看

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值