题目要求
定义一个日期类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;
}
总结
该题考察类的定义及使用,知识点较为简单,适合初学者。
我是秋说,我们下次见。
标签:定义,闰年,int,31,C++,PTA,函数,第几天,d1 From: https://www.cnblogs.com/qiushuo/p/17481447.html