好文档 - 专业文书写作范文服务资料分享网站

《C++大学教程第五版》课后习题答案(第3、9章)

天下 分享 时间: 加入收藏 我要投稿 点赞

} // end function setDate

void Date::setDay( int d ) {

if ( month == 2 && leapYear() )

day = ( d <= 29 && d >= 1 ) ? d : 1; else

day = ( d <= monthDays() && d >= 1 ) ? d : 1; } // end function setDay

void Date::setMonth( int m ) {

month = m <= 12 && m >= 1 ? m : 1; // sets month } // end function setMonth

void Date::setYear( int y ) {

year = y >= 1900 ? y : 1900; // sets year } // end function setYear

int Date::getDay() {

return day;

} // end function getDay

int Date::getMonth() {

return month;

} // end function getMonth

int Date::getYear() {

return year;

} // end function getYear

void Date::print() {

cout << month << '-' << day << '-' << year << '\\n'; // outputs date } // end function print

void Date::nextDay() {

setDay( day + 1 ); // increments day by 1

if ( day == 1 ) {

setMonth( month + 1 ); // increments month by 1

if ( month == 1 )

setYear( year + 1 ); // increments year by 1 } // end if statement } // end function nextDay

bool Date::leapYear() {

if ( year % 400 == 0 || ( year % 4 == 0 && year % 100 != 0 ) ) return true; // is a leap year else

return false; // is not a leap year } // end function leapYear

int Date::monthDays() {

const int days[ 12 ] =

{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

return month == 2 && leapYear() ? 29 : days[ month - 1 ]; } // end function monthDays 测试函数:

#include using std::cout; using std::endl;

#include \ // include definitions of class Date

int main() {

const int MAXDAYS = 16;

Date d( 12, 24, 2004 ); // instantiate object d of class Date

// output Date object d's value

for ( int loop = 1; loop <= MAXDAYS; ++loop ) {

d.print(); // invokes function print

d.nextDay(); // invokes function next day } // end for

cout << endl;

return 0; } // end main 9.09 类定义:

#ifndef DATEANDTIME_H #define DATEANDTIME_H class DateAndTime {

public:

DateAndTime( int = 1, int = 1, int = 1900,int = 0, int = 0, int = 0 );

// default constructor

void setDate( int, int, int ); // set month, day, year void setMonth( int ); // set month void setDay( int ); // set day void setYear( int ); // set year void nextDay(); // next day

void setTime( int, int, int ); // set hour, minute, second void setHour( int ); // set hour

void setMinute( int ); // set minute void setSecond( int ); // set second void tick(); // tick function int getMonth(); // get month int getDay(); // get day int getYear(); // get year int getHour(); // get hour

int getMinute(); // get minute int getSecond(); // get second

void printStandard(); // print standard time void printUniversal(); // print universal time private:

int month; // 1-12

int day; // 1-31 (except February(leap year), April, June, Sept, Nov) int year; // 1900+

int hour; // 0-23 (24 hour clock format) int minute; // 0-59 int second; // 0-59

bool leapYear(); // leap year

int monthDays(); // days in month }; // end class DateAndTime #endif

类成员函数:

#include using std::cout; using std::endl;

#include \ // include definition of class DateAndTime DateAndTime::DateAndTime(

int m, int d, int y, int hr, int min, int sec ) {

setDate( m, d, y ); // sets date

setTime( hr, min, sec ); // sets time } // end DateAndTime constructor

void DateAndTime::setDate( int mo, int dy, int yr ) {

setMonth( mo ); // invokes function setMonth setDay( dy ); // invokes function setday setYear( yr ); // invokes function setYear } // end function setDate

void DateAndTime::setDay( int d ) {

if ( month == 2 && leapYear() )

day = ( d <= 29 && d >= 1 ) ? d : 1; else

day = ( d <= monthDays() && d >= 1 ) ? d : 1; } // end function setDay

void DateAndTime::setMonth( int m ) {

month = m <= 12 && m >= 1 ? m : 1; // sets month } // end function setMonth

void DateAndTime::setYear( int y ) {

year = y >= 1900 ? y : 1900; // sets year } // end function setYear void DateAndTime::nextDay() {

setDay( day + 1 ); // increments day by 1 if ( day == 1 ) {

setMonth( month + 1 ); // increments month by 1 if ( month == 1 )

setYear( year + 1 ); // increments year by 1 } // end if statement } //end function nextDay

void DateAndTime::setTime( int hr, int min, int sec ) {

setHour( hr ); // invokes function setHour

setMinute( min ); // invokes function setMinute setSecond( sec ); // invokes function setSecond

} // end function setTime

void DateAndTime::setHour( int h ) {

hour = ( h >= 0 && h < 24 ) ? h : 0; // sets hour } // end function setHour

void DateAndTime::setMinute( int m ) {

minute = ( m >= 0 && m < 60 ) ? m : 0; // sets minute } // end function setMinute

void DateAndTime::setSecond( int s ) {

second = ( s >= 0 && s < 60 ) ? s : 0; // sets second } // end function setSecond void DateAndTime::tick() {

setSecond( second + 1 ); // increments second by 1 if ( second == 0 ) {

setMinute( minute + 1 ); // increments minute by 1 if ( minute == 0 ) {

setHour( hour + 1 ); // increments hour by 1 if ( hour == 0 )

nextDay(); // increments day by 1 } // end if } // end if

} // end function tick

int DateAndTime::getDay() {

return day;

} // end function getDay int DateAndTime::getMonth() {

return month;

} // end function getMonth int DateAndTime::getYear() {

return year;

} // end function getYear int DateAndTime::getHour() {

return hour;

} // end function getHour

《C++大学教程第五版》课后习题答案(第3、9章)

}//endfunctionsetDatevoidDate::setDay(intd){if(month==2&&leapYear())day=(d=1)?d:1;elseday=(d<=month
推荐度:
点击下载文档文档为doc格式
3pb4894ier553973044s2xc786b4a900yvw
领取福利

微信扫码领取福利

微信扫码分享