打印一年内任意月份的日历(C语言)

本博客介绍如何在C语言中编写一个函数,根据2007年1月1日为周一的情况,输出任意月份的日历。虽然未包含闰年的处理,但指出加入闰年判断(如2月28天加1天)即可完成完整功能。欢迎讨论交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求:2007年1月1日为星期一,编写一个函数,输出2007年任意月份的日历
这道题我是个人的做法,有个别地方可能有些绕。

#include<stdio.h>
int main()
{
	int month,WEEKDAY,count,month_days,width;
	int isWhatDay(int month);     //声明计算的函数
	printf("Please enter a month:\n");
	scanf("%d",&month);
	WEEKDAY = isWhatDay(month);         //将函数返回值赋给WEEKDAY
	printf("Calendar 2007 - %d\n",month);
	printf("----------------------------\n");
	printf("  Su  Mo  Tu  We  Th  Fr  Sa\n");    //空白处是两个空格
	 //下面是赋各个月份的天数
	if(month == 1||month == 3||month == 5||month == 7||month ==8||month == 10||month == 12)
		month_days = 31;
	else if(month == 2)
		month_days = 28;
	else
		month_days = 30;
	width = 4 * WEEKDAY;  
	/*此处计算width可能一开始看不懂,实际上是为了打印空格,
	空格不printf到第一天的前一位是因为下面输出是%4d,其前三位是空格了。*/
	for(count = 1;count <= width;count++)
		printf(" ");
	for(count = 1;count <= month_days;count++)
	{
		printf("%4d",count);
		if(WEEKDAY + (count - 1) % 7 == 6)  
		//这个if是因为到星期六就换行所以我从这个出发写出的等式
			printf("\n");
	}
	printf("\n-----------------
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值