前言:
现时小伙伴们对“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语言计算某年某月的天数