C语言打印某一年中某月的日历

 更新时间:2021年12月06日 08:43:01   作者:printf("雷猴");  
本文详细讲解了C语言打印某一年中某月的日历,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在做学校作业发现的一道不错的练手题目,记录下来方便复习

大致思路:

  • ① 判断输入的年份是否闰年;
  • ② 计算输入月份的第一天是该年的第几天;
  • ③ 计算输入月份的第一天是星期几;
  • ④ 输出。

结合代码使用:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int arr1[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int i = 0;
	int year = 0;
	int month = 0;
	int days = 0;
	int week = 0;//判断第一天周几
	scanf("%d%d", &year, &month);
	if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))//判断是否是闰年
	{
	arr1[2] = 29;//闰年2月29天
    }
	for (i = 0; i < month; i++)
	{
		days += arr1[i];//计算该月第一天是该年多少天
	}
	days++;//该月第一天,还要把这一天算上
	//套用计算星期几的公式
	week = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + days) % 7;
	printf(" 日 一 二 三 四 五 六\n");//表头
	int arr2[50] = {0};
	for (i = 0; i < week; i++)
	{
		printf("   ");//整型数组不能存放空格,因此直接把空格打印出来
	}
	arr2[week] = 1;
	for (i = week + 1; i <= arr1[month]+week-1; i++)//把输入月份的每一天放到数组中
	{
		arr2[i] = arr2[i-1]+1;
	}
	int count = 0;//记录已打印几个数据,打印7个数据就换行
	i = week;
	int flag = 1;//用于记录是否为第一行,第一行不能用count计数方式换行
	while (i<=arr1[month]+week-1)//把该月所有天数都打印出来
	{
		if (flag <= 7-week)
		{
			printf("%3d", arr2[i]);
			if (flag == 7 - week)//打印够数据后换行
				printf("\n");
			flag++;
		}
		else
		{
			printf("%3d", arr2[i]);
			count++;
			if (count == 7)
			{
				count = 0;
				printf("\n");
			}
		}
		i++;
	}
	return 0;
}

实现结果:

以上所述是小编给大家介绍的C语言打印某一年中某月的日历,希望对大家有所帮助。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • C++对象的浅复制和深复制详解及简单实例

    C++对象的浅复制和深复制详解及简单实例

    这篇文章主要介绍了C++对象的浅复制和深复制详解及简单实例的相关资料,需要的朋友可以参考下
    2017-04-04
  • C语言实现学生学籍管理系统程序设计

    C语言实现学生学籍管理系统程序设计

    这篇文章主要为大家详细介绍了C语言实现学生学籍管理系统程序设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 详解C++ sizeof(下)

    详解C++ sizeof(下)

    这篇文章主要介绍了C++ sizeof的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2020-08-08
  • C++基础教程之指针拷贝详解

    C++基础教程之指针拷贝详解

    这篇文章主要介绍了C++基础教程之指针拷贝详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • 深入了解c语言的循环语句

    深入了解c语言的循环语句

    这篇文章主要为大家介绍了c语言的循环语句,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • C++超详细梳理IO流操作

    C++超详细梳理IO流操作

    当程序与外界进行信息交换时,存在两个对象,一个是程序中的对象,另一个是文件对象。流是信息流动的一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动
    2022-07-07
  • C++ 常量成员函数学习笔记

    C++ 常量成员函数学习笔记

    这篇文章主要为大家介绍了C++ 常量成员函数学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • C语言实现简单图书管理系统

    C语言实现简单图书管理系统

    这篇文章主要为大家详细介绍了C语言实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言数据结构与算法之链表(二)

    C语言数据结构与算法之链表(二)

    在这篇文章中,我们将抛开令人头秃的指针和结构体,我们将另外使用一种数组来实现的方式,叫做模拟链表。让来跟随小编一起学习学习吧
    2021-12-12
  • C语言 完整游戏项目推箱子详细代码

    C语言 完整游戏项目推箱子详细代码

    经典的推箱子是一个的古老游戏,目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务
    2021-11-11

最新评论