以2016-11-10的格式输入一个日期,利用数组完成合法性判断,并计算该日期是这一年的第几天。
时间: 2024-02-25 13:57:49 浏览: 46
java 输入某年某月某日,判断这一天是这一年的第几天
好的,我们可以使用一个长度为12的整型数组来表示输入的日期,数组的第一个元素表示年,第二个元素表示月,第三个元素表示日,以此类推。然后,我们需要进行一些合法性判断,例如判断月份是否在1到12之间,是否是闰年等等。最后,我们可以用一个变量来记录这个日期是这一年的第几天,具体实现方法是先计算该日期是这一年的第几天之前的天数,再加上当月的天数。
以下是一个 C++ 实现的示例代码:
```c++
#include <iostream>
using namespace std;
int main() {
int date[12];
cout << "请输入一个日期(格式:年-月-日):" << endl;
scanf("%d-%d-%d", &date[0], &date[1], &date[2]);
// 判断输入的日期是否合法
bool is_valid = true;
// 判断月份是否在1到12之间
if (date[1] < 1 || date[1] > 12) {
is_valid = false;
cout << "输入的月份不合法!" << endl;
}
// 判断日是否在1到31之间
if (date[2] < 1 || date[2] > 31) {
is_valid = false;
cout << "输入的日不合法!" << endl;
}
// 判断闰年的情况
bool is_leap_year = false;
if ((date[0] % 4 == 0 && date[0] % 100 != 0) || date[0] % 400 == 0) {
is_leap_year = true;
}
// 判断对应月份的天数是否合法
int days_of_month;
switch (date[1]) {
case 2:
days_of_month = is_leap_year ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
days_of_month = 30;
break;
default:
days_of_month = 31;
break;
}
if (date[2] > days_of_month) {
is_valid = false;
cout << "输入的日不合法!" << endl;
}
if (is_valid) {
// 计算该日期是这一年的第几天
int days_of_year = date[2];
for (int i = 1; i < date[1]; i++) {
switch (i) {
case 2:
days_of_year += is_leap_year ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
days_of_year += 30;
break;
default:
days_of_year += 31;
break;
}
}
cout << "该日期是这一年的第" << days_of_year << "天。" << endl;
}
return 0;
}
```
希望能帮到你!
阅读全文