C语言打印某一年中某月的日历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语⾔打印某⼀年中某⽉的⽇历,希望对⼤家有所帮助。
在此也⾮常感谢⼤家对⽹站的⽀持!。