做这种题感觉还是很实用的。主要就是锻炼以下类的定义和使用。
问题主要描述:
定义一个日期类Date:
内有数据成员年、月、日。
另有成员函数:
(1)构造函数用于初始化数据成员。
(2)输出函数(打印)。
(3)闰年的判断。
编写主函数:创建日期对象,从键盘输入年、月、日,计算并输出该日是该年的第几天。
输入样例:
2006 3 5
输出样例:
64 (2006年3月5日是该年的第64天)
Date类如下:(学过C++的人对这个类应该都会感到很清晰)
class Date{
private:
int year,month,day;//私有成员
public://共有成员函数
Date(int year1, int month1, int day1);//构造函数
int judge();//闰年的判断函数
void print();//打印函数
};
构造函数的实现:
Date::Date(int year1, int month1, int day1){
year = year1;
month = month1;
day = day1;
}
闰年的判断函数的实现:
int Date::judge(){
if(year%4 == 0 && year%100 != 0 || year % 400 == 0)
return 1;
else
return 0;
}
打印函数的实现:
void Date::print(){
int days = 0;
int str[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
if(judge())
str[1] = 29;
for(int i = 0;i < month - 1; i ++)
days += str[i];
cout<<days + day<<endl;
}
ps:对于这部分,讲一下思路吧,把12个月的天数放在一个字符串数组里,闰年和平年的区别只有2月,闰年2月28天,平年2月29天,判断结束后只需将str[1]进行修改,计算天数时只需将各月天数叠加再加上日(day)而已。
主函数的实现:
#include <iostream>
using namespace std;
int main(){
int yy,mm,dd;
cin>>yy>>mm>>dd;
Date a(yy,mm,dd);//定义类对象a
a.print();//调用打印函数
}
运行结果如下:
总结以下,用C++解决问题有时候真的很清晰,主函数简介明了,所有的操作都封装在类里,类里面也是用private和public划分的很清晰,成员函数的声明和实现分开,声明在类里面,实现在类外面。(当然也可以都写在类里,不过分开更好,程序员要做的就是条例清晰,层次明了,这样看着会很舒服)。