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语言打印某一年中某月的日历,希望对大家有所帮助。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C语言打印某一年的日历

    本文通过实例为大家分享了C语言打印某一年日历的具体代码,供大家参考,具体内容如下 输入一个年份(1970以后的),以 2*6 的格式打印当年的日历. 主要思路:遍历日期,根据日期标记每一行应该打印的内容,存放到一个数组中,然后遍历数组,根据数组的内容逐行打印.代码如下: // 打印日历 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> char month[12][10] = { "January", "Febr

  • C语言实现按月显示的日历

    本文实例为大家分享了C语言实现按月显示的日历,供大家参考,具体内容如下 首先显示一下我们最后要出来的效果图: 大概就是这个样子.那么我们先来说说基本的思路:首先计算出当前年的第一天是星期几,再根据当前年是星期几的结果计算出当前月是星期几的结果,最后再按照效果图的样子输出一下就OK了. 我们的基本步骤是: 1.定义输入函数,也就是你要输入的年和月. 2.计算当前年的第一天是星期几.我们需要定义一个基准年,再定义出基准年的第一天是星期几.最后计算出当前年与基准年之间的差值,用最后的结果加上基准年第一

  • c语言实现一个简单日历

    满足三个需求: 1.输入一个年份,输出是在屏幕上显示该年的日历.假定输入的年份在1940-2040年之间. 2.输入年月,输出该月的日历. 3.输入年月日,输出距今天还有多少天,星期几,是否是公历节日. 最终完善版代码: 复制代码 代码如下: #include<stdio.h> #include <string.h> #include <time.h> #include <math.h> #include <windows.h> int year

  • 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;

  • C语言打印华氏-摄氏温度对照表的方法

    本文实例讲述了C语言打印华氏-摄氏温度对照表的方法.分享给大家供大家参考.具体实现方法如下: /* * 打印华氏-摄氏温度对照表 */ #include <stdio.h> /* 温度上限 */ #define MIN 20.0 /* 温度下限 */ #define MAX 300.0 /* 步长 */ #define BC 20.0 main() { /* 定义温度及上下限步常变量 */ float oc,of=1.0; /* 打印标题 */ printf("华氏-摄氏温度对照表\

  • C语言打印菱形实例详解

    前言 打印菱形这道题对于初学编程者来说简直是噩梦,曾经我就是栽在这上面的,后来编程编多了之后对打印菱形也觉得不再那么难了,去年在公众号写了一篇推送是关于打印菱形的,觉得对一些师弟师妹还是有所帮助的,今天就把这道题分享出来. 以下是我遇到的各种各样的菱形: 普通菱形,输入n,输出n行n列的菱形 难度系数:♥ n行空心菱形,输入n,输出n行空心菱形 难度系数:♥♥ n行挖空菱形,输入n,输出n行n列空格菱形 难度系数:♥♥♥ n行数字菱形,输入n,输入n行数字从外到内递增的数字菱形 难度系数:♥♥♥

  • C语言打印各种图案实例代码

    1.线段图案 #include<stdio.h> int main() { int a = 0; while(~scanf("%d",&a)) { int i = 0; for(i=0;i<a;i++) { printf("*"); } printf("\n"); } return 0; } 2.正方形图案 #include<stdio.h> int main() { int a = 0; while(~sc

  • C语言打印杨辉三角形的示例代码

    目录 1. 题目描述 2. 解题思路 3. 动图演示 4. 代码实现 Step1 Step2 居中显示 5. 完整代码 6. 特性总结 1. 题目描述 杨辉三角形 解题之前,我们先来了解一下杨辉三角形到底是什么? 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形,它的排列形如三角形. 因为首现于南宋杨辉的<详解九章算法>得名,而书中杨辉说明是引自贾宪的<释锁算书>,故又名贾宪三角形. 古代波斯数学家欧玛尔·海亚姆也描述过这个三角形.在欧洲,因为法国数学家布莱兹‧帕斯卡在165

  • C语言打印正方形实例代码

    目录 题目描述 输入 输出 样例输入 样例输出 题目描述 由火柴棍组成的一个n×n的正方形,按从上到下,从左到右的顺序给火柴棍编号,从1开始,比如下图中,一共有24根火柴棍. 问去掉若干个火柴棍之后,这个图形中还存在多少个正方形? 如下图所示,n=3时,去掉12,17,23号火柴棒之后,还剩下5个正方形. 输入 第一行是一个整数T(1≤T≤1000),表示样例的个数. 每个样例的第1行是两个整数n(1≤n≤50),表示图形的宽度. 样例的第2行首先是一个整数m(0≤m≤2n(n+1),表示去掉火

  • java实现日历(某年的日历,某月的日历)用户完全自定义

    用户可以自定义打印某一年的年历,即:把某一年的日历全部打印出来 如把2013年的年历打印出来如下: 复制代码 代码如下: January  2013          ---------------------------------------------   Sun   Mon   Tue   Wed   Thu   Fri   Sat     2     3     4     5     7     8     9     10    11    12    14    15    16

  • C语言打印杨辉三角示例汇总

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一.在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n为行数减1.也就是说任何一个数等于这个是高中的组合数.n代表行数减1,不代表列数减1.如:第五行的第三个数就为=6. 现在我们按第一种思路来写:先定义一个二维数组:a[N][N],略大于要打印的行数.再令两边的数为1,即当每行的第一个数和

  • R语言时间序列中时间年、月、季、日的处理操作

    1.年 pt<-ts(p, freq = 1, start = 2011) 2.月 pt<-ts(p,frequency=12,start=c(2011,1)) frequency=12表示以月份为单位,start 表示时间开始点,start=c(2011,1) 表示从2011年1月开始 3.季度 pt <- ts(p, frequency = 4, start = c(2011, 1)) 4.天 pt<-ts(p,frequency=7,start=c(2011,1)) 用 ts

随机推荐