当前位置: 首页 > 文档资料 > C++大学教程 >

6.23 自测练习题

优质
小牛编辑
135浏览
2023-12-01

6.3 作用域运算符的作用是什么?

6.4 比较 C++ 中的 struct 和 class。

6.5 提供一个构造函数,用 time() 函数中的当前时间初始化Time类对象,time()在C标准库的头文件time.h中声明。

6.6 生成 complex 类,进行复数的运算。编写一个驱动程序,测试这个类。

复数的形式如下:
realpart + lmaginaryPart * i
其中i为:
(-1)1/2
用浮点变量表示类的privale数据。提供一个构造函数,让这个类的对象在声明时初始化。
不提供初始化值时,构造函数应包含默认值。对下列情况提供public成员函数:
a)两个complex值相加:实数部分相加,虚数部分相加。
b)两个complex值相减:实数部分相减,虚数部分相减。
c)打印形如(a,b)的complex值,其中a为实数部分.b为虚数部分。

6.7 生成一个Rational类,进行带分数的运算。编写一个驱动程序,测试这个类。

用整数变量表示类的private数据(分子和分母),提供一个对所声明对象初始化的构造函数。不提供初始化值时,构造函数应包含默认值并将分数存放成简化形式,例如分数:2/4

应在对象中存放成分子1和分母2的形式。对下列情况提供public成员函数:
a)两个Rational值相加,结果保存成简化形式。
b)两个Rational值相减,结果保存成简化形式。
c)两个Rational值相乘,结果保存成简化形式。
d)两个Rational值相除,结果保存成简化形式。
e)按a/b形式打印Rational值,其中a为分子,b为分母。
f)按浮点数形式打印Rational值。

6.8 修改图 6.10 的 Time 类,用—个 tick 成员函数将Time对象中存放的时间递增1秒。Time 对象应该总是保持一致状态。编写一个驱动程序,在循环中测试tick成员函数,按标准格式打印时间,从而演示 tick 成员函数的工作情况。要保证测试下列情况:

a)递增到下一分钟。
b)递增到下一小时。
c)递增到下一天(即11:59:59PM到12:00:00AM)。

6.9 修改图 6.12 的 Date 类,对数据成员 month、day 和 year 的的初始化值进行错误检查。并提供成员函数nextDay将日期递增1天。Date对象应该总是保持一致状态。编写一个驱动程序,在循环中测试 nextDay 成员函数,按标准格式打印日期,演示nextDay成员函数的工作情况。要保证测试下列情况:

a)递增到下一月。
b)递增到下一年。

6.10 将练习 6.8 修改的 Time 类和练习 6.9 修改的 Date 类合并成 DateAndTime 类(第9章将介绍继承,方便地完成这个工作而不必修改现有类定义)。修改 tick 函数,在时间递增到下一天时调用nextDay函数。修改函数 printStandard 和 printMilitary,不仅输出时间,也输出日期。编写一个驱动程序,测试新类 DateAndTime(特别要测试时间递增到下一天时的情况)。

6.11 修改图 6.10 的 set 函数,在 Time 类对象的数据成员要设置为无效值时返回相应错误值。

6.12 生成一个 Rectangle 类,这个类的 length 和 width 属性默认为 1,其成员函数计算长方形的 perimeter(周长)和 area(面积)。为该类的 length 和 width 设置set和get函数。set 函数应验证 length 和 width 均为 0.0 到 20.0 之间的浮点数。

6.13 生成比上一练习更复杂的 Rectangle 类,这个类只保存长方形4个角的直角坐标值。构造函数调用一个 set 函数,接受四组坐标并验证它们均在第一象限中,x、y坐标均不大于20.0,该函数还验证提供的坐标确实构成长方形。成员函数计算 length、width、perimeter 和 area。长度为两个值中较大者。用一个判定函效square确定是否为正方形。

6.14 修改练习 6.13 的 Rectangle 类,用draw函数在矩形所在第一象限的25 x 25闭合框中显示这个长方形。用setFillCharacter函数指定绘制长方形外部的字符。用setPerimeterCharacter函数指定绘制长方形四边的字符。还可以加上函数对长方形进行比例缩放、旋转和在第一象限指定范围中移动。

6.15 生成 HugeInteger 类,用40个元素的数字数组存放最多40位的整数值。提供成员函数 inputHugeInteger、outputHugeInteger、addHugeIntegers 和substractHugeIntegers。要比较 HugeInteger 对象,提供函数 isEqualTo、isNotEqualTo、isGreaterThan、isLessThan、IsGreaterThanorEqualTo 和 isLessThanOrEqualTo,这些判定函数在两个大数间的关系成立时返回 true,关系不成立时返回false。该类还提供判定函数 isZero,也可以提供成员函数 multiplyHugeIntegers、divideHugeIntegers 和 modulusHugeIntegers。

6.16生成一个TicTacToe类,编写完成三连棋游戏的程序。这个类包含一个 3 x 3 整型数组作为private数据,构造函数将空棋盘全部初始化为 0。允许两个人玩游戏。第一个人走棋时,将1放在指定格中;第二个人走棋时,将2放在指定格中,每次只准移动到空白格。
走棋之后,确定是否有人赢了(即3个1连成一条线或3个2连成一条线),或是否打了个平手。还可以将程序修改成人机进行游戏,允许游戏者决定他是先走还是后走。甚至可以开发一个程序,在 4 x 4 x 4 棋盘上玩三维三连棋游戏(注意:这个项目相当难,可能要好几个星期才能完成)。