题目要求
定义一个日期类Date,内有数据成员年、月、日,另有成员函数:构造函数用于初始化数据成员,输出,闰年的判断。编写主函数:创建日期对象,计算并输出该日是该年的第几天。
输入:
每组测试数据仅包含一个测试用例,每个测试用例占一行包括三个数,分别表示年、月、日。
输出:
该日是该年的第几天。
输入样例:
2006 3 5
输出样例:
64 (2006年3月5日是该年的第64天)
解题思路
首先定义一个名为 Date
的类,类中包含以下成员变量:
year
: 年份month
: 月份day
: 日y
: 判断闰年的标志
以及以下成员函数:
pd()
: 判断当前年份是否是闰年,如果是,则将y
标志赋值为1
,否则赋值为0
。in()
: 输入年、月、日。js()
: 计算日期到全年第几天,该函数利用每个月的天数和是否闰年来计算。
同时,在 main()
函数中创建一个 Date
的实例对象 d1
,然后按顺序调用 d1
的成员函数,最终输出计算结果。
代码
#include<iostream> using namespace std; class Date{ private: int year, month, day, y, d; public: int pd() { if((year%4==0 && year%100!=0) || year%400==0) // 如果年份符合闰年的条件之一,即可判定为闰年 { y = 1; // 标记为闰年 } else { y = 0; // 标记为平年 } } int in() { cin >> year >> month >> day; // 读取日期数据 } int js() // 计算日期到全年第几天的函数 { int x=0, a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i, r=0; for(i=0; i<month; i++) // 循环遍历每个月,将该月的天数累加到变量 x 中 { x += a[i]; } x += day; // 将当前月的天数加上指定的日数 if(year%4==0 && year%100!=0 || year%100==0) { r = 1; } if(r && month>2) // 如果当前年份是闰年,并且当前月份大于 2 月,需要将多出的一天加上 { x++; } return x; // 返回全年第几天的结果 } }; int main() { Date d1; d1.in(); // 调用对象的 in() 函数读取日期数据 d1.pd(); // 调用对象的 pd() 函数判断该年份是否为闰年 int a = d1.js(); // 调用对象的 js() 函数计算日期到全年第几天的结果 cout << a; // 输出结果 return 0; }
总结
该题考察类的定义及使用,知识点较为简单,适合初学者。
我是秋说,我们下次见。