做這種題感覺(jué)還是很實(shí)用的。主要就是鍛煉以下類(lèi)的定義和使用。
問(wèn)題主要描述:
定義一個(gè)日期類(lèi)Date:
內(nèi)有數(shù)據(jù)成員年、月、日。
另有成員函數(shù):
(1)構(gòu)造函數(shù)用于初始化數(shù)據(jù)成員。
(2)輸出函數(shù)(打?。?/p>
(3)閏年的判斷。
編寫(xiě)主函數(shù):創(chuàng)建日期對(duì)象,從鍵盤(pán)輸入年、月、日,計(jì)算并輸出該日是該年的第幾天。
輸入樣例:
2006 3 5
輸出樣例:
64 ??(2006年3月5日是該年的第64天)
Date類(lèi)如下:(學(xué)過(guò)C++的人對(duì)這個(gè)類(lèi)應(yīng)該都會(huì)感到很清晰)
class Date{
private:
int year,month,day;//私有成員
public://共有成員函數(shù)
Date(int year1, int month1, int day1);//構(gòu)造函數(shù)
int judge();//閏年的判斷函數(shù)
void print();//打印函數(shù)
};
構(gòu)造函數(shù)的實(shí)現(xiàn):
Date::Date(int year1, int month1, int day1){
year = year1;
month = month1;
day = day1;
}
閏年的判斷函數(shù)的實(shí)現(xiàn):
int Date::judge(){
if(year%4 == 0 && year%100 != 0 || year % 400 == 0)
return 1;
else
return 0;
}
打印函數(shù)的實(shí)現(xiàn):
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:對(duì)于這部分,講一下思路吧,把12個(gè)月的天數(shù)放在一個(gè)字符串?dāng)?shù)組里,閏年和平年的區(qū)別只有2月,閏年2月28天,平年2月29天,判斷結(jié)束后只需將str[1]進(jìn)行修改,計(jì)算天數(shù)時(shí)只需將各月天數(shù)疊加再加上日(day)而已。
主函數(shù)的實(shí)現(xiàn):
#include <iostream>
using namespace std;
int main(){
int yy,mm,dd;
cin>>yy>>mm>>dd;
Date a(yy,mm,dd);//定義類(lèi)對(duì)象a
a.print();//調(diào)用打印函數(shù)
}
運(yùn)行結(jié)果如下:
總結(jié)以下,用C++解決問(wèn)題有時(shí)候真的很清晰,主函數(shù)簡(jiǎn)介明了,所有的操作都封裝在類(lèi)里,類(lèi)里面也是用private和public劃分的很清晰,成員函數(shù)的聲明和實(shí)現(xiàn)分開(kāi),聲明在類(lèi)里面,實(shí)現(xiàn)在類(lèi)外面。(當(dāng)然也可以都寫(xiě)在類(lèi)里,不過(guò)分開(kāi)更好,程序員要做的就是條例清晰,層次明了,這樣看著會(huì)很舒服)。