本关任务:编写程序从键盘输入一个日期,要求计算输出该日期是这一年的第几天。要求如下: 用switch语句实现。 用scanf函数实现日期的年,月,日三个整数的输入,且输入前要有相应的提示。 程序中需要判断所输入的年份值是否为闰年。
时间: 2024-10-08 19:11:12 浏览: 235
本关任务涉及的程序设计目标是让用户通过键盘输入一个日期,然后计算出这个日期在当年的天数。以下是用C语言实现的一个简单示例:
```c
#include <stdio.h>
int is_leap_year(int year) {
if (year % 4 != 0) return 0;
else if (year % 100 != 0) return 1; // not divisible by 100 but divisible by 4
else if (year % 400 != 0) return 0;
else return 1; // divisible by 400
}
int main() {
int day, month, year;
printf("请输入日期(格式:YYYY-MM-DD):");
scanf("%d-%d-%d", &year, &month, &day);
// 判断月份范围
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day += 31;
break;
case 4:
case 6:
case 9:
case 11:
day += 30;
break;
case 2: // 考虑闰年
if (is_leap_year(year)) day += 29;
else day += 28;
break;
default:
printf("错误的月份!\n");
return -1;
}
// 加上前一年的剩余天数
for (int i = 1; i < month; i++) {
if (i == 2 && is_leap_year(year)) day += 29; // 闰年的二月
else day += (i == 2 ? 28 : 31); // 其他月份
}
printf("该日期在%04d年是第%d天。\n", year, day);
return 0;
}
```
在这个程序中,我们首先定义了一个`is_leap_year`函数来检查给定年份是否为闰年。接着,用户通过`scanf`输入年、月、日,然后用`switch`语句处理不同月份的天数,并考虑闰年的特殊规则。最后,计算并输出该日期是一年的第几天。
阅读全文