用C语言编写一个程序,要求:可以实现多组输入设计一个日期类(CDate),属性为年、月、日,成员函数为设置当前日期 setDate(…)、 当前日期减一天 decreaseDate()和显示日期 showDate()。要求对于每组数据,先 输出日期,日期减一天后,再输出日期,均需要用类的成员函数实现。输出格式参 照样例输出。 输入描述: 年月日,空格隔开 输出描述: 日期减一天后斜线隔开输出。 输入样例: 2022 1 1 输出样例: 2022/1/1 2021/12/31
时间: 2023-12-03 15:47:26 浏览: 66
asp实现计算两个时间内的工作日的函数
以下是一个可能的 C 语言程序实现:
```c
#include <stdio.h>
typedef struct {
int year;
int month;
int day;
} CDate;
void setDate(CDate* date, int year, int month, int day) {
date->year = year;
date->month = month;
date->day = day;
}
void decreaseDate(CDate* date) {
if (date->day > 1) {
date->day--;
} else {
if (date->month > 1) {
date->month--;
switch (date->month) {
case 2:
if (date->year % 4 == 0 && (date->year % 100 != 0 || date->year % 400 == 0)) {
date->day = 29;
} else {
date->day = 28;
}
break;
case 4:
case 6:
case 9:
case 11:
date->day = 30;
break;
default:
date->day = 31;
break;
}
} else {
date->year--;
date->month = 12;
date->day = 31;
}
}
}
void showDate(CDate* date) {
printf("%04d/%d/%d ", date->year, date->month, date->day);
}
int main() {
int year, month, day;
while (scanf("%d%d%d", &year, &month, &day) == 3) {
CDate date;
setDate(&date, year, month, day);
showDate(&date);
decreaseDate(&date);
showDate(&date);
putchar('\n');
}
return 0;
}
```
程序使用 `CDate` 结构体定义了一个日期类,其中 `setDate` 函数可以设置当前日期,`decreaseDate` 函数可以将当前日期减一天,`showDate` 函数可以显示当前日期。
在主函数中,程序使用循环读入多组输入,并依次对每组输入使用 `setDate` 函数设置当前日期,然后使用 `showDate` 函数输出当前日期,再使用 `decreaseDate` 函数将当前日期减一天,最后再使用 `showDate` 函数输出减一天后的日期。
注意在 `decreaseDate` 函数中需要考虑月份和闰年的情况。
阅读全文