编写一个c++程序,设计一个函数year可以对键盘输入的年份,判断该年是平年还是闰年,并在该函数中输出判断结果
时间: 2023-05-30 13:04:32 浏览: 99
#include <stdio.h>
void year(int y) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
printf("%d年是闰年\n", y);
} else {
printf("%d年是平年\n", y);
}
}
int main() {
int y;
printf("请输入一个年份:");
scanf("%d", &y);
year(y);
return 0;
}
相关问题
编写一个C++程序,随机生成NextDate函数的100条测试用例
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int NextDate(int year, int month, int day);
int main() {
srand(time(NULL)); // 设置随机数种子为当前时间
int year, month, day;
for (int i = 0; i < 100; i++) {
// 随机生成年月日
year = rand() % 100 + 1900; // 1900年到1999年之间
month = rand() % 12 + 1; // 1月到12月之间
if (month == 2) { // 2月特殊处理
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 闰年
day = rand() % 29 + 1; // 1号到29号之间
} else { // 平年
day = rand() % 28 + 1; // 1号到28号之间
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月
day = rand() % 30 + 1; // 1号到30号之间
} else { // 大月
day = rand() % 31 + 1; // 1号到31号之间
}
printf("%d-%02d-%02d -> ", year, month, day);
NextDate(year, month, day);
printf("\n");
}
return 0;
}
int NextDate(int year, int month, int day) {
int nextYear, nextMonth, nextDay;
if (year < 1900 || year > 1999 || month < 1 || month > 12 || day < 1 || day > 31) {
printf("输入日期不合法\n");
return -1;
}
if (month == 2) { // 2月特殊处理
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 闰年
if (day == 29) {
nextYear = year;
nextMonth = 3;
nextDay = 1;
} else if (day < 29) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
} else { // 平年
if (day == 28) {
nextYear = year;
nextMonth = 3;
nextDay = 1;
} else if (day < 28) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) { // 小月
if (day == 30) {
nextYear = year;
nextMonth = month + 1;
nextDay = 1;
} else if (day < 30) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
} else { // 大月
if (day == 31) {
if (month == 12) {
nextYear = year + 1;
nextMonth = 1;
nextDay = 1;
} else {
nextYear = year;
nextMonth = month + 1;
nextDay = 1;
}
} else if (day < 31) {
nextYear = year;
nextMonth = month;
nextDay = day + 1;
} else {
printf("输入日期不合法\n");
return -1;
}
}
printf("%d-%02d-%02d\n", nextYear, nextMonth, nextDay);
return 0;
}
```
用C++定义一个结构体类型(包括年、月、日)。编写程序读入“年-月-日”格式的日期,并计算该日期是该年中的第几天。注意闰年问题
以下是C++代码示例:
```cpp
#include <iostream>
using namespace std;
struct Date {
int year;
int month;
int day;
};
int daysOfMonth(int year, int month) {
switch (month) {
case 2:
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
return 29; // 闰年2月有29天
} else {
return 28; // 平年2月有28天
}
case 4:
case 6:
case 9:
case 11:
return 30; // 4月、6月、9月、11月有30天
default:
return 31; // 其他月份有31天
}
}
int getDayOfYear(Date date) {
int days = 0;
for (int i = 1; i < date.month; i++) {
days += daysOfMonth(date.year, i);
}
days += date.day;
return days;
}
int main() {
Date date;
cout << "请输入日期(格式为年-月-日):" << endl;
scanf("%d-%d-%d", &date.year, &date.month, &date.day);
int days = getDayOfYear(date);
cout << date.year << "年" << date.month << "月" << date.day << "日是该年的第" << days << "天" << endl;
return 0;
}
```
在上面的代码中,我们首先定义了一个 `Date` 结构体类型,表示年、月、日。然后我们实现了一个 `daysOfMonth` 函数,用于计算每个月份的天数,注意闰年的情况。接着,我们实现了一个 `getDayOfYear` 函数,用于计算一个日期是该年的第几天。最后,在 `main` 函数中读入日期并输出该日期是该年的第几天。