输入年份并输出当年的日历

要求:用调用函数实现,每个函数完成一个功能;

思路:
1. main函数中只出现输入年份,和打印年份月数的函数;
2. 输入年份函数;
3. 打印年份日历函数:用循环实现1-12月的打印,调用月份打印函数
4.打印月份函数
5. 返回月数名称的函数
6. 计算year的month的天数的函数
7. 计算year的month的第一天是星期几的函数
8.判断year是否是闰年
9. 打印某月的第一天以前的空格数;
 

#include<stdio.h>
#include<stdbool.h>

int enter_year(void);//输入年份函数
_Bool leap_year(int year);//判断是否为闰年函数
void print_calendar(int year); //打印日历函数
void print_month(int month);//打印月份名称函数
int days_num(int year,int month);//返回该月天数函数
void print_week(void);//打印周一到周日
int firstday(int year,int month);//返回该月第一天是周几函数
void print_space(int year,int month);//空格缩进函数

int main()
{
//	while(1)
//	{
		print_calendar( enter_year() );
//	}

	return 0;
}


int enter_year(void)//输入年份函数,并返回输入值
{
	printf("please enter the year:");
	int year;
	scanf("%d",&year);
	printf("\n");

	return year;
}

_Bool leap_year(int year)//判断是否为闰年函数
{
	if( (year%400 == 0) || (year%4==0 && year%100!=0) )
		return true;
	else 
		return false;
}

void print_calendar(int year)//打印年份日历函数
{
	int i;
	int j;
	int count;

	for(i=1; i<=12; i++)
	{
		print_month(i);
		print_week();
		print_space(year,i);
		               
                count=firstday(year,i)+1;

		for(j=1; j<=days_num(year,i); j++)
		{
			printf("%-2d  ",j);//左对齐,宽度为2 
                                            
			if( count%7 == 0 && j!=days_num(year,i) )//避免某月最后一天也正好换行
			{
				printf("\n");
                                //count=0;
			}	
                        count ++;
		}
                printf("\n");
	}
}

void print_month(int month)//打印月数名称函数
{
	switch(month) 
	{
		case 1:printf("          JANUARY:\n");
		       break;
		case 2:printf("          FEBRUARY:\n");
		       break;
		case 3:printf("           MARCH:\n");
		       break;
		case 4:printf("           APRIL:\n");
		       break;
		case 5:printf("            MAY:\n");
		       break;
		case 6:printf("            JUNE:\n");
		       break;
		case 7:printf("            JULY:\n");
		       break;
		case 8:printf("           AUGUST:\n");
		       break;
		case 9:printf("          SEPTMBER:\n");
		       break;
		case 10:printf("         OCTOBER:\n");
		       break;
		case 11:printf("         NOVEMBER:\n");
		       break;
		case 12:printf("         DECEMBER:\n");
		       break;
		default : 
		       break;
	}
}

int days_num(int year,int month)//返回该月天数函数
{
	switch(month)
	{
		case 2:if( leap_year(year) )
		       {
		       		return 29;	
		       }
		       else 
			       return 28;
			break;
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
			break;
		case 4:
		case 6:
		case 9:
	        case 11:
			return 30;
			break;
		default : 
			break;
	}

}

void print_week(void)//打印周日到周一
{
	printf("Mon Tue Wen Thu Fri Sat Sun\n");
}

int firstday(int year,int month)//该月第一天是周几函数
{
	if(month==1 || month==2)//判断是否为1、2月
	{
		year--;
		month+=12;
	}
	return ( (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7 );
	//0-6 一到日
}

void print_space(int year,int month)//空格缩进函数
{
	int i=0;
	while(i<firstday(year,month))
	{
		printf("    ");
                i++;
	}
}


  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
calendar模块是Python中的一个内置模块,用于处理日期和时间相关的操作。它包含了一些函数和类,可以方便地生成各种格式的日历。 如果想要输出指定年份日历,可以使用calendar模块中的函数。为了了解该模块的使用方法,可以通过查看它的帮助文档来获得相关信息。 首先,我们可以使用help()函数来查看calendar模块的帮助文档。在Python交互式环境中输入以下代码: ```python import calendar help(calendar) ``` 执行以上代码后,会显示出calendar模块的帮助文档。其中可以看到常用的函数包括`calendar.calendar()`、`calendar.prmonth()`、`calendar.month()`等,它们分别用于打印整、整日历。 针对需求,我们可以使用`calendar.calendar()`函数来生成指定年份日历。具体做法是从键盘输入年份,并将其作为参数传递给`calendar.calendar()`函数。以下是示例代码: ```python import calendar year = int(input("请输入年份:")) print(calendar.calendar(year)) ``` 以上代码中,首先通过`input()`函数从键盘输入一个年份,并将其转换为整数类型。然后通过`calendar.calendar(year)`将指定年份日历打印出来。 这样就实现了通过calendar模块从键盘输入年份,并输出年份日历的功能。需要注意的是,calendar模块还提供了很多其他函数,可以根据具体需求进行选择和使用。希望以上解答对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值