打印某一年的月份日历或者某天星期几

本文介绍如何利用C语言判断闰年,并打印指定年份如2008年任意月份的日历,确保星期一作为每周的第一天。通过分析闰年判断和起始星期数确定,给出代码实现及运行效果。
摘要由CSDN通过智能技术生成

打印某一年的月份日历

题目

2008年1月1日为星期二,判断2008年是否为闰年,输入任意一个月份,打印该年该月的日历,要求按周排齐,星期一排第一列。

分析

第一:考察的就是闰年的判断。

 - 1、能整除400的。 year%400==0
 - 2、能整除4同时不能整除100 。year%4==0&&year%100!=0

第二: 2008年1月1日是星期二,说明整除7的时候余数是2,这时候我们算天数的时候要在2的基础上开始,才能算出正确的星期

我觉得考察点就是这两个吧。
为什么要考虑闰年,闰年2月是29天,平年是28天,所以这一块的考虑。
下面我们看一下具体的代码吧。

代码(源码点击这里)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int days(int flag, int month);
void fun6(){    
	int year = 2008;    //这里的月份按照题设是给定了,可以定义输入
	int flag = 0;    
	int month, week, day = 2;    
	if ((year % 4 ==
C语言中,打印一年日历通常需要使用一些循环和条件判断来处理月份的天数变化。以下是一个简单的示例,展示如何打印出2023日历: ```c #include <stdio.h> #include <stdlib.h> // 函数来获取给定月份的天数 int days_in_month(int month, int year) { switch (month) { case 2: if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return 29; // 考虑闰年 else return 28; case 1, 3, 5, 7, 8, 10, 12: return 31; // 非闰年都是31天 default: return 30; // 4, 6, 9, 11月非闰年是30天 } } void print_calendar(int year) { for (int i = 1; i <= 12; i++) { printf("%d\n", year); printf(" "); for (int j = 1; j <= 7; j++) { printf("%2d ", j); // 两位数显示 } printf("\n"); int day_of_week = (year + (i - 1) / 12) * 26 + (i + 2) / 10 + (i % 10 > 4 ? 1 : 0); // 根据蔡勒公式计算星期几 int start_day = (day_of_week - 1 + 7) % 7; // 转换到一周中的第一天 for (int k = 1; k < start_day; k++) { printf(" "); // 填充空白 } printf("%d", year % 100); // 显示份的最后两位 for (int l = 1; l <= days_in_month(i, year); l++) { if (l == start_day + 1) { printf("*"); // 初始日期标记 } else { printf("%2d ", l); } } printf("\n"); } } int main() { int year = 2023; print_calendar(year); return 0; } ``` 这个程序首先定义了一个函数`days_in_month`来获取指定月份的天数,然后通过`print_calendar`函数按行打印日历。注意,这是一个简化版本,没有考虑到更复杂的格式美化和闰年规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值