龙空技术网

C语言-万年历项目(2)

一只爱阅读的程序猿 260

前言:

现时小伙伴们对“c语言计算某年某月的天数”都比较注重,姐妹们都想要分析一些“c语言计算某年某月的天数”的相关文章。那么小编也在网摘上汇集了一些关于“c语言计算某年某月的天数””的相关资讯,希望大家能喜欢,各位老铁们快快来学习一下吧!

第二部分先实现第三步,示例代码如下,

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#define START_YEAR 1900

int main() {

printf("----------------------欢迎使用简易日历系统-------------------------\n");

int year, month, monthDays;

// 1、输入年份和月份,判断输入年份是否是闰年

do {

printf("请输入年份:");

scanf("%d", &year);

rewind(stdin);

} while (year < START_YEAR);

do {

printf("请输入月份:");

scanf("%d", &month);

rewind(stdin);

} while (month < 1 || month > 12);

int isLeapYear = 0;

if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0) {

// 闰年

isLeapYear = 1;

}

printf("isLeapYear=%d\n", isLeapYear);

// 计算输入月份的天数

switch (month) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

monthDays = 31;

break;

case 4:

case 6:

case 9:

case 11:

monthDays = 30;

break;

case 2:

if (isLeapYear == 1) {

monthDays = 29;

} else {

monthDays = 28;

}

break;

}

printf("monthDays=%d\n", monthDays);

/*

3、计算该月的第一天是星期几

提示:

(1)循环计算从1900年开始到输入年份的年份总天数;

(2)需要判断每一年是闰年还是平年,闰年有366天,平年有365天;

(3)计算输入的月份距离当年1月的天数,并和输入年份之前的天数进行累加;

(4)计算输入月份的第一天是星期几,以1900年1月1日星期一为基准进行推算:

星期X = (1 + 总天数) % 7;周一到周6,可以使用数字1-6表示,数字0表示周日。

*/

int yearDays = 0;

for (int i = 0; i < year; i++) {

if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {

// 闰年

yearDays += 366;

} else {

// 平年

yearDays += 365;

}

}

printf("yearDays=%d\n", yearDays);

int monthTotalDays = 0;

for (int i = 0; i < month; i++) {

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {

monthTotalDays += 31;

} else if (month == 4 || month == 6 || month == 9 || month == 11) {

monthTotalDays += 30;

} else if (month == 2) {

if (isLeapYear == 1) {

monthTotalDays += 29;

} else {

monthTotalDays += 28;

}

}

}

printf("monthTotalDays=%d\n", monthTotalDays);

int week = (yearDays + monthTotalDays + 1) % 7;

printf("week=%d \n", week);

return 0;

}

打印出来的week就表示每月1日前面对应的空格数,测试结果如下,

以2023年11月为例,

由于是把星期日排在最后面,因此是对得上的。真实测试的时候,可以测试一个大的月份,小的月份。2月可以分为闰年和平年进行测试,尽量测试全面一些,减少出错的概率。

标签: #c语言计算某年某月的天数