展示某年12个月份的日历,年份手动输入。

该程序设计思路是判断年份是否为闰年,确定每个月的天数,计算日期对应的星期,最后输出12个月的日历。通过使用isLeapYear、monthDays、getWeekDay和outMonthDays等函数,实现了这一功能。
摘要由CSDN通过智能技术生成

1. 设计思路
  要展示某年12个月份的日历,首先要判断年份是否为闰年,然后判断某年某月的天数,再判断某天是星期几,最后输出12个月份的日历。

2. 源代码

#include <stdio.h>
main()
{
	int isLeapYear(int);   	//判断输入年份是否是闰年的函数
	int monthDays(int,int);	   //判断某个日期是星期几的函数
	int getWeekDay(int,int,int);    //输出某年某月月历的函数	
	void outMonthDays(int,int);	
	int Year,Month;
	printf("请输入年份:");
	scanf("%d",&Year);
	printf("%d年日历为:\n",Year);
	printf("----------------------------------------------\n");
	for(Month=1;Month<=12;Month++)
	{
		outMonthDays(Year,Month);
	}
	return 0;
}
/*判断是否是闰年的函数*/
int isLeapYear(int Year)
{
	if(Year%4==0 && Year%100!=0 || Year%400==0)
		return 1;
	return 0;
}
/*判断某年每月的天数*/
int monthDays(int Year,int Month)
{
	if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
	{
		return 31;
	}
	else if(Month == 4 || Month == 6 || Month == 9 || Month == 11)
	{
		return 30;
	}
	else
	{
		if(isLeapYear(Year))
			return 29;
		return 28;
	}
}
/*判断某年某月某号是周几的具体实现*/
int getWeekDay(int Year,int Month,int Day)
{
	int i,temp,weekday,Days=0;
	for(i=1;i<=Month-1;i++)
	{
		Days+=monthDays(Year,i);
	}
	Days = Days + Day;
	temp = (Year-1)+(Year-1)/4-(Year-1)/100+(Year-1)/400+Days;
	weekday = temp % 7;
	return weekday;
}
/*打印某年某月日历的具体实现*/
void outMonthDays(int Year,int Month)
{
	int i,j,weekday;
	printf("%d年%d月日历\n",Year,Month);
	printf("  日  一  二  三  四  五  六\n");
	weekday = getWeekDay(Year,Month,1);
    for(i=0;i<weekday;i++)
	{
		printf("    ");
	}
	for(j=1;j<=monthDays(Year,Month);j++)
	{
		printf("%4d",j);
		if((j+weekday)%7==0)
		{
			printf("\n");
		}
	}
	printf("\n");
	printf("--------------------------------------------------------\n");
}

3. 实验结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会举重的薯片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值