使用C语言编写一个程序,在主函数中从用户处读取一年和两个月(当年)的数字。该计划将输出当年给定月份之间的天数,包括相关月份的天数。
该计划必须考虑(检查)可能的闰年。使用函数计算天数。使用判断年份是否是闰年的函数确定给定年份是否为闰年。
注:给定月份必须关联给定年份。例如,如果用户以一年为单位输入2019年,两个月输入8到11,程序将输出2019年8月至11月(包括这些月)之间的月份天数。
使用C语言编写一个程序,在主函数中从用户处读取一年和两个月(当年)的数字。该计划将输出当年给定月份之间的天数,包括相关月份的天数。
该计划必须考虑(检查)可能的闰年。使用函数计算天数。使用判断年份是否是闰年的函数确定给定年份是否为闰年。
注:给定月份必须关联给定年份。例如,如果用户以一年为单位输入2019年,两个月输入8到11,程序将输出2019年8月至11月(包括这些月)之间的月份天数。
#include <stdio.h>
bool isRunYear(int year)
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
int getMonthDay(int year, int month)
{
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
return 31;
if (month == 2)
{
return isRunYear(year) ? 29 : 28;
}
return 30;
}
int main(void)
{
bool isFirst = true;
int year = 0, month1 = 0, month2 = 0, nTotal = 0;
while (year <= 0 || month1 <= 0 || month2 <= 0 ||
month1 > 12 || month2 > 12 || month1 > month2)
{
if (!isFirst) {
printf("输入错误,请重新输入\n");
}
printf("请输入年份:\n");
scanf("%d", &year);
printf("请输入起始月份:\n");
scanf("%d", &month1);
printf("请输入结束月份:\n");
scanf("%d", &month2);
isFirst = false;
}
for (int i = month1; i <= month2; i++)
{
nTotal += getMonthDay(year, i);
}
printf("间隔天数:%d\n", nTotal);
return 0;
}