3.25 自测练习
3.1 填空:
a)C++中的程序组件称为____和____。
b)通过____调用函数。
c)只在函数中定义和访问的变量称为____。
d)被调函数中的____语句将表达式返回调用函数。
e)函数首部用关键字____表示函数不返回值或函数不包含参数。
f)标识符的____是程序中可以使用该标识将的部分。
g)将控制从被调函数返回调用者的三种方法是____、____和____。
h)____使编译gD可以检查传入函数的参数个数、类型和顺序。
i)____函数用于产生随机数。
j)____函数设置将程序随机化的随机数种子。
k)存储类说明符有____、____、____和____。
l)函数块或参数表中声明的变量默认为存储类____,除非另外指定。
m)存储类说明符____建议编译器将变量存放在计算机的寄存器中。
n)块和函数之外声明的变量是____变量。
o)要让函数中的局部变量在函数调用之间保持其数值,则要用存储类说明符____—声明。
P)标识符的四种作用域是____、____、____和____。
q)直接或间接调用自己的函数是____函数。
r)递归函数通常有两个组件:一个提供测试____情况以终止递归的方法;另一个将问题表示为比原问题简化的问题。
s)在C++中,可以有多个同名而处理不同参数类型或个数的函数,称为函数____。
t)____可以在局部变量范围中访问与局部变量同名的全局变量。
u)____限定符声明只读变量。
v)函数____使一个函数可以定义成对许多不同数据类型完成同一个任务。
3.2 对于如下程序,指出下列元素的作用域(函数范围、文件范围、块范围或函数原型范围):
a)main中的变量x。
b)cube中的变量y。
c)函数cube。
d)函数main。
e)cube的函数原型。
f)cube函数原型中的标识符y。
// exO3_O2.cpp #include <iostream.h> int cube (int y ); int main(){ int x; for ( x = 1; x <= 10; x++ ) cout << cube (x) << endl; return 0; } int cube(int y){ return y * y * y; }
3.3 编写一个程序,测试图3.2所示数学库函数调用的例子是否产生图中所示结果。
3.4指定下列函数的函数首部:
a)函数hypotenuse取两个双精度浮点数参数side1和side2,返回一个双精度浮点数结果。
b)函数smallest取三个整数x、y、z并返回一个整数。
c)函数instructions不取参数也不返回数值(注意:这种函数通常用于向用户显示指令)。
d)函数intToFloat取整数参数number,返回浮点数结果。
3.5 指定下列函数原型:
1)练习3.4a)的函数。
b)练习3.4b)的函数。
c)练习3.4c)的函数。
d)练习3.nd)的函数。
3.6编写下列声明:
a)整数count,放在寄存器中,将count初始化为O。
b)浮点变量lastVal,在所定义函数调用之间保持其数值。
c)外部变量number,其作用域限于所在文件。
3.7 寻找下列程序中的错误并说明如何纠正(也可见练习3.53):
s) int g( void ) {
cout << "Inside function g" << endl;
int h( void ){
cout <<'I' nside function h" << endl;
}
}
b) int sum( int x, int y ) {
int result;
result = x + y;
c) int sum( int n ) {
if (n==O)
return O;
else
n + sum( n - 1 );
}
d) void f( float a ); {
float a;
cout << a << endl;
}
e) void product( void ) {
int a, b, c, result;
cout << "Enter three integers: ";
cin >> a >> b >> C;
result = a * b * c;
cout << "Result is "<< result;
return result;
}
3.8 为什么函数原型包含"float&"之类的参数类型声明?
3.9 (判断对错)C++中的所有调用都是传值调用。
3.10编写一个完整的C++程序,用内联函数sphere Volume提示用户输入球半径.计算和打印
球的体积,公式为volume = (4/3)*3.14159*pow(radius,3)。
自测练习答案
3.1 a)函数、类。b)函数调用。c)局部变量。d)return。e)void。0作用域。g)return;或relura explession;或遇到函数结束符号。h)函数原型。i)rand。j)srand。k)auto、register、extern、static。l)auto。m)register。n)外部(全局)。o)static。p)函数范围、文件范围、块范围或函数原型范围。q)递归。r)基本。s)重载。t)一元作用域运算符(::)。 u)const。v)模板。
3.2 a)块范围。b)块范围。c)文件范围。d)文件范围。e)文件范围。f)函数原型范围。
3.3 如下所示:
// ex03_03.cpp /* Testing the math library functions */ #include <iostream.h> #include <iomanip.h> #include <math.h> int main(){ cout << setiosflags( ios::fixed | ios::showpoint ) << setprecision( 1 ) << "sqrt(" << 9OO.0 << ") = "<< sqrt( 900.0 ) << "\nsprt(" << 9.0 << ") = "<< sqrt( 9.0 ) << "\nexp(" << 1.0 << ") = " << setprecision( 6 ) << exp( 1.0 ) << "\nexp(" << setprecision( 1 ) << 2.0 << ") =" << setprecision(6) << exp( 2.0 ) << "\nlog(" << 2.718282 << ") = "<< setprecision( 1 ) << log(" << 2.718282 ) << "\nlog(" << setprecision( 6 ) << 7.389056 << ") =" << setprecision( 1 ) << log( 7.389056 ) << endl; cout << "logl0(" << 1.0 << ") = " << logl0( 1.0 ) << "\nlogl0(" << 1O.0 << ") = "<< loglO( 10.O ) << "\nlogl0(" << 100.0 << ") = "<< loglO( 100.0 ) << "\nfabs(" << 13.8 << ") = " << fabs( 13.5 ) << "\nfabs(" << 0.O << ") =" << fabs( 8.0 ) << "\nfabs(" << -13.5 << ") =" << fabs(-13.5 ) << endl; cout << "ceil(" << 9.2 << ") =" << ceil( 9.2 ) << "\nceil (" << -9.8 << ") = "<< ceil( -9.8 ) << "\nfloor (" << -9.2 << ") = "<< floor( -9.2 ) << "\nfloor (" << -9.8 << ") = "<< floor( -9.8 ) << endl; O cout << "pow(" << 2.O << ", "<< 7.O << ") =" << pow( 2.0, 7.0 ) << "\npow(" << 9.0 << "," << 0.5 << ") =" << pow( 9.0, 0.5 ) << setprecision( 3 ) << "\nfmod(" << 13.675 << ", "<< 2.333 << ") =" << fmod( 13.675, 2.333 ) << setprecision( 1 ) << "\nsin(" << O.0 << ") = "<< sin ( 0.O ) << "\ncos(" << 0.0 << ") =" << cos ( 0.0 ) << "\ntan{" << 0.0 << ") =" << tan ( 0.0 ) << endl; return O; }
输出结果:
Sqrt(900.O) = 30.0
sqrt(9.0) = 8.0
exp(1.O) = 2.718282
exp(2.O) = 7.389056
log(2.718282)= 1.0
log(7.389056) = 2.0
loglO(1.O) = 0.0
loglO(10.0) = 1.0
loglO(lO0.O) = 2.0
fabs(13.5) = 13.5
fabs(0.O) = 0.0
fabs(-13.5) = 13.5
ceil(9.2) 10.0
ceil(-9.8) = -9.0
floor(9.2) = 9.0
floor (-9.8) =-10.0
pow(2.0, 7.0) = 128.0
pow(9.0, 0.5) = 3.0
fmod(13.675, 2.333) = 2.010
sin(O.O}= 0.0
cos(O.O) = 1.0
tan(0.0) = 0.0
3.4 a)double hypotenuse( double sidel,double sidel )
b) int smallest( int x, int y, int z )
c) void instructions( void ) // in C++ (void) can be written()
d) float intToFloat{ int number)
3.5 a)double hypotenuse( double, double )
b) int smallest( int, int, int )
c) void instruction(void);
d) float intToFloat{ int );
3.6 a) register int count s 0;
b) static float lastVal;
c) static int mumber;
注意:声明在任何函数定义之外。
3.7 a)不正确:函数h在函数g中定义。
纠正:将函数h移到函数g外定义。
b)不正确:函数要返回整数而没有返回整数。
纠正:删除变量result并在函数中加上下列语句:
return x + y;
c)不正确:结果不返回n + sum(n - 1),sum返回错误结果。
return n + sum(n - 1);
d)不正确:参数表右括号后面的分号和函数定义中重新定义参数a。
纠正:删除参数表右括号后面的分号,删除声明语句"float a";。
e)不正确:函数不该返回值而返回值。
纠正:删除return语句。
3.8 由于程序员声明float引用类型的引用参数,通过引用调用访问原参数变量。
3.9 不正确。C++可以用指针和引用参数直接按引用调用。
3.10 如下所示:
// ex03 1O.cpp // Inline function that calculates the volume of a sphere #include <iostream.h> const float PI = 3.14159; inline float sphere Volume(const float r){ return 4.0 / 3.0 * PI * r * r * r;} int main(){ float radius; cout << "Enter the length of the radius of your sphere: "; cin >> radius; cout << "Volume of sphere with radius "<< radius << "is "<< sphereVolume( radius ) << endl; return O; }
练习
3.1l在执行下列每条语句之后显示x值:
a) x: labs(7.5 )
b) x: floor( 7.5 )
e) x: fabs( 0.0 )
d) x: ceil( 0.0 )
e) x: fabs( -6.4 )
fl x: ceil( -6.4 )
g) x: ceil( -labs( -8 + floor( -5.5 ) ) )
3.12在停车场停车3个小时以内收费2美元,超过三个小时每小时增收0.5美元,24小时最高收费为10美元。假设任何车辆一次停车时间不会超过24小时。编写一个程序,计算和打印昨天在停车场停车的三个客户的停车费。程序应输入每个客户的停车时间并以整齐的表格形式打印结果,应计算和打印昨天收据的总和。程序用函数calculateCharges确定每个客户的停车费。输出格式如下:
Car HOURS Charge
1 1.5 2.00
2 4.0 2.50
3 24.0 10.00
TOTAL 29.5 14.50
3.13函数floor的一个应用是将一个值取整为最接近的整数。下列语句:
y = floor(x + .5);
将x值取整为最接近的整数并将结果赋给y。编写一个程序,读取几个数并用上述语句将这些值取整为最接近的整数。对处理的每个数,打印原值和取整值。
3.14函数floor可以将一个值取整为特定小数位。下列语句:
y = floor(x*10+.5)/10;
将x取整为小数点后面第一位(十分位)。下列语句:
y=floor(x*100+.5)/100;
将x取整为小数点后面第二位(百分位)。编写一个程序,定义4个函数,用不同方法取整x:
a) roundToInteger(number)
b) roundToTenths (number)
c) roundToHundredths (number)
d) roundToThousandths (number)
对读取的每个值,程序应打印原值、该值取整为最接近的整数、该值取整为最接近的十分位、该值取整为最接近的百分位、该值取整为最接近的千分位。
3.15回答下列问题:
a)"随机"选择数值是什么意思?
b)为什么rand函数可以模拟“机会游戏”?
c)为什么用srand将程序随机化?在什么情况下最好不要随机化?
d)为什么通常要位移和缩放rand产生的值?
e)为什么用计算机处理模拟现实世界是个有用的技术?
3.16编写将下列范围的随机整数赋给变量n的语句。
a)1≤n(2
b)1≤n≤'OO
c)O≤n≤9
d)1000≤n≤1112
f)-3≤n ≤ 11
3.17对下列每组整数.编写一个随机打印这些值的语句。
a)2、4、 6、 8、 10。
b)3、5、7、9、11。
c)6、10、14、18、22。
3.18编写函数integerPower(base,exponent),返回下列代数式的值:
baseexponent
例如,integerPower(3,4)=3*3‘3*3。假设exponent为正的非0整数,base为整数。
函数integerPower用for或while控制计算,不要用任何数学库函数。
3.19定义函数hypotenuse,计算已知两边时直角三角形的弦长,用这个函数在程序中确定下列三角形的弦长。函数取两个double类型参数,返回double类型值。
----------------------------------------------------- 三角形 Side1 Side2 ----------------------------------------------------- 1 3.0 4.0 2 5.0 12.0 3 8.0 15.0 -----------------------------------------------------
3.20编写函数multiple,确定一对整数中第二个整数是否为第一个整数的倍数。函数取两个整数参数,如果第二个整数是第一个的倍数则返回true,否则返回false。在程序中输入一系列整数,并使用该函数。
3.21编写一个函数,输入一组整数,一次一个地传入函数even,用求模运算符确定其是否为偶数。函数取整数参数,并在该数为偶数时返回true,否则返回false。
3.22编写一个函数,在屏幕左边显示由星形组成的实心正方形,指定边长为整型参数side。例如,side等于4时,函数显示:
****
3.23修改练习3.22生成的函数,用fillCharecter字符参数中包含的字符填充这个长方形。例如,side为5而fillCharecter为“#”时的辅出如下:
#####
#####
#####
#####
#####
3.24用上面两个练习所用的方法产生一个程序,可以绘制各种图形。
3.25编写完成下列任务的程序段:
o)计算整数a除以整数b的商的整数部分。
b)计算整数a除以整数b的余数。
c)用a)和b)中的程序段编写一个程序,输入1到32767之间的整数,打印成一系列数字,每一对数字之间用两个空格分开。例如,整数4562打印为:
4 5 6 2
3.26编写一个函数,将时间设为三个整数参数(时、分、秒)并返回从最近的12点整算起的秒数。利用这个函数计算两个时间之间的秒数,时间间隔不超过12小时。
3.27实现下列整型函数:
a)函数celsius返回华氏温度对应的摄氏温度。
b)函fahrenheit返回摄氏温度对应的华氏温度。
c)用这些函数编写一个程序,打印从0到100度的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。用整齐的表格形式输出,减少输出行数,同时保持可读性。
3.28编写一个函数,返回三个浮点数中的最小值。
3.20编写函数multiple,确定一对整数中第二个整数是否为第一个整数的倍数。函数取两个整数参数,如果第二个整数是第一个的倍数则返回true,否则返回false。在程序中输入一系列整数,并使用该函数。
3.21编写一个函数,输入一组整数,一次一个地传入函数even,用求模运算符确定其是否为偶数。函数取整数参数,并在该数为偶数时返回true,否则返回false。
3.22编写一个函数,在屏幕左边显示由星形组成的实心正方形,指定边长为整型参数side。例如,side等于4时,函数显示:
****
3.23修改练习3.22生成的函数,用fillCharecter字符参数中包含的字符填充这个长方形。例如,side为5而fillCharecter为“#”时的辅出如下:
#####
#####
#####
#####
#####
3.24用上面两个练习所用的方法产生一个程序,可以绘制各种图形。
3.25编写完成下列任务的程序段:
o)计算整数a除以整数b的商的整数部分。
b)计算整数a除以整数b的余数。
c)用a)和b)中的程序段编写一个程序,输入1到32767之间的整数,打印成一系列数字,每一对数字之间用两个空格分开。例如,整数4562打印为:
4 5 6 2
3.26编写一个函数,将时间设为三个整数参数(时、分、秒)并返回从最近的12点整算起的秒数。利用这个函数计算两个时间之间的秒数,时间间隔不超过12小时。
3.27实现下列整型函数:
a)函数celsius返回华氏温度对应的摄氏温度。
b)函fahrenheit返回摄氏温度对应的华氏温度。
c)用这些函数编写一个程序,打印从0到100度的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。用整齐的表格形式输出,减少输出行数,同时保持可读性。
3.28编写一个函数,返回三个浮点数中的最小值。
3.29一个整数的所有因子(包括1,但不包括本身)之和等于该数,则该数称为完数。例如,6是个完数,因为6=1+2+3。编写一个perfect程序,确定参数number是否为完数。用这个函数确定和打印1到1000之间的所有完数。打印每个完数的因子并确定其的确是个完数。测试比1000大得多的数,挑战计算机的计算能力。
3.30只能被1和自己整除的数称为质数。例如,2、3、5、7就是质数,而4、6、8、9则不是。
a)编写一个程序,确定参数是否为质数。
b)用这个函数确定和打印1到10000之间的所有质数。要先测试多少个数才能确定找出了所有质数?
c)最初你可能以为n/2是确定找出了所有质数时要测试的数值个数上限,但实际上只要 次即可,为什么?改写程序,用两种方法运行,看看性能提高了多少?
3.31编写一个函数,取整数值并返回将数字反序的数值。例如.输入7631,函数返回1367。
3.32两个整数最大公约数(GCD)是这两个数能够整除的最大整数。编写一个gcd函数,返回两个整数最大公约数。
3.33编写函数qualilyPoints,输入学生的平均成绩,如果平均成绩在90~100,则返回4,如果平均成绩在80~89,则返回3,如果平均成绩在70~79,则返回1,如果平均成绩在60~69,则返回1,如果平均成绩在60以下,则返回0。
3.34编写一个模拟投币的程序,每次结果应为正面或反面,打印Heads或Tails。让程序投币100次,计算每面出现的次数并打印结果。程序应调用一个flip函数,该函数不取参数,返回。表示正面,1表示反面。说明:如果程序真实模拟投币,则每一面出现的次数应近似相等。
3.35计算机在教育领域的作用越来越大.编写一个程序,帮助小学生学习乘法。用rand函数产生两个一位正整数,然后:输入下列问题:
HOW much is 6 times 77
然后学生输人答案,程序检查学生的答案。如果正确,则打印”Very good!”,然后提出另一个乘法问题,如果不正确.则打印”No.Please try again.”,然后让学生重复回答这个问题,直到答对。
3.36在教学中使用计算机称为计算机辅助教学(CAI)。CAI环境中出现的一个问题是学生容易疲劳。要消除这个问题,可以改变计算机的对话来保持学生的注意力。修改练习3.35的程序,使每次学生答对时和答错时打印不同的评语。
答对时打印:
Very good!
Excellent!
Nice work!
Keep uP the good work!
答错时打印:
No.Please try again.
Wrong.Try once more.
Don,t give up!
No.Keep trying.
用随机数产生器选择1到4的数,由此选择相应评语。用switch结构发出响应。
3.37更复杂的计算机辅助教学(CAI)系统要监视学生在一段时间的成绩。新内容的推出通常是在学生学妤,日内容之后进行的。修改练习3.36的程序,计算学生答对和答错的比例。
学生输入10个答案后,程序计算其答对率。如果比例不到75%,则程序打印”Pleaseask your instructor for extra help",然后终止。
3.38编写一个猜数字游戏的程序,程序随机选择一个1到1000的数,然后输入:
I have a number between 1 and 1000.
Can you guess my number?
Please type your first guess.
然后游戏者输入第一个结果。程序响应如下:
1.Excellent! YOu guessed the number!
Would you like to play again (y or n)?
2.Too low.Try again.
3.Too high.Try again.
如果游戏者猜错,则程序进行循环,直到猜对。程序通过Too high或Too low消息帮助学生接近正确答案。说明:这个程序中采用的查找技术称为折半查找,将在下一题更多地讨论。
3.39修改练习3.38的程序,计算游戏者已猜过的次数。如果次数值为10以下,则打印Either you know the secret or you gotlucky!。如果lO次猜中,则打印Ahab! You know the secret!。
如果超过10次才猜中,则打印You should be able to do better!。为什么不应超过10次呢?
高手怎么在最少的次数内猜中呢?为什么1到1000的数字能在10次之内猜中呢?
3.40编写一个递归函数power(base,exponent)调用时返回 baseexponent
例如,power(3,4) = 3*3*3*3。假设exponent是大于或等于1的整数值。提示:递归步骤使用下列关系:
basee.base~。)-l
并在exponent等于1时停止递归,因为:
ba~=base
3.41 Fibonacci数列:
O,1,1,2,3,5,8, 13,2l,....
以0和1开头,后面的数是前面相邻两个数之和。a)编写一个非递归函数fibonacci(n),计算第n个Fibonacci数。b)确定系统中可以打印的最大Fibonacci数。修改程序以使用double 类型的整数而不是int类型,然后重复b)。
3.42(汉诺塔问题)每个计算机科学家都要掌握一些经典问题,图3.28所示的汉诺塔问题是最著名的经典问题之一。传说远东地区有一座庙,僧人要把盘子从一堆移到另一堆。最初一堆在柱子上串了64个盘子,从下向上逐渐减小。僧人要把这堆移到另一堆,但一次只能移一个盘子,且任何时候不能把大盘子放在小盘子上面。第三根柱子可以暂时放置盘子。假设盘子移完之后,世界末日就会到达,因此我们不想帮他加快速度。
假设僧人要把盘子从第1根柱子移到第3根柱子。我们要开发一个算法,打印移动盘子的顺序。
如果用传统方法解决这个问题,则很快就会发现这个问题太复杂了。如果用递归法,则可以理出思路。移动n个盘子可以简化为移动n-1个盘子,如下所示:
a)将n-1个盘子从第1根柱子移到第2根柱子上,用第3根柱子作为临时存放区。
b)将最后一个盘子(最大)从第1根柱子移到第3根柱子。
c)将n-1个盘子从第2根柱子移到第3根柱子上,用第1根柱子作为临时存放区。
移动n=1个盘子时,过程结束。这时很容易移动盘子,不需要临时存放区。
编写一个解决汉诺塔问题的程序,用递归函数和4个函数:
a)要移的盘子个数
b)最初放盘子的柱子
c)盘子移动到该处的柱子
d)临时放盘子的柱子
程序应打印从原柱子向目标柱子移动盘子的详细步骤。例如,要将三个盘子从第1根柱子移到第3根柱子,步骤如下:
1—>3(即把一个盘子从第1根柱子移到第3根柱子)
1—>2
3—>2
1—>3
1—>1
2—>3
l—>3
3.43任何能递归实现的程序也可以迭代实现,但有时会比较困难。试编写一个汉诺塔问题的迭代程序。如果成功,试比较迭代程序与练习3.42中的递归程序,观察一下程序的性能、清晰性和正确性。
3.44(图形化递归)可以观察递归的"操作过程"。修改图3.14的阶乘函数,打印其局部函数和递归调用参数。对每个递归调用,单独在一行显示输出并加一级缩排,尽量使输出更清晰、更有趣、更有意义。这里的目标是设计和实现能让人更容易理解递归的输出格式。
可以在许多其他递归练习和例子中增加这种显示功能。
3.45整数x和y的最大公约数是x和y能够整除的最大整数。编写一个递归函数gcd,返回整数x和y的最大公约数。整数x和y的最大公约数的递归定义如下:如果y等于0,则gcd
(x,y)为x,否则gcd(x,y)为gcd(y,x%y),其中%是求模运算符。
3.46 main能否递归调用?编写一个包含函数main的程序。包括static类型的局部变量count并初始化为1。每次调用main时先递增count并打印coun的值。运行程序,看看会发生什么情况。
3.47练习3.35到3.37开发了一个教小学生学乘法的计算机辅助教学程序。本练习要改进这个程序。
a)修改程序,让用户输入级别。1级表示只用一位数,2级表示可用两位数等等。
b)修改程序,让用户输入要学习的算术类型,1表示加法、2表示减法、3表示乘法、4表示除法、5表示混合运算。
3.48编写函数distance,计算两点(x1,y1)与(x2,y2)之间的距离。所有数字和返回值应为float类型。
3.49下列程序有什么作用?
// ex3.49.cpp #include <iostream.h> int main(){ int c; if((c=cin.get())!=EOF){ main( ); cout << c; } return 0; }
3.50下列程序有什么作用?
// exc03.50.cpp #include <iostream.h> int mystery(int, int ); int main(){ int x, y; cout << "Enter two integers:"; cin >> x >> y; cout << "The result is "<< mystery ( x,y ) << endl; return 0; } // Parameter b must be a positive // integer to prevent infinite recursion int mystery (int a, int b){ if ( b == 1 ) return a; else return a + mystery(a, b - 1 ); }
3.51确定练习3.50的程序结果后修改程序,使第二个参数为非负值的限制删除之后程序还能正确地工作。
3.52编写一个程序,测试图3.2中的各种数学库函数。让程序打印各种参数值和返回值的对照表。
3.53找出下列程序段中的错误并说明如何纠正。
a) float cube( float ); /* function prototype */
cube( float number ) /* function definition*/
{
return numbez * number * number;
}
b) register auto int x = 7;
c) int randomNumber = srand( );
d) float y = 123.45675;
int x;
x=y;
cout << static cast< float> ( x ) << endl;
e) double square( double number )
{
double number;
return number * number;
}
f) int sum ( int n )
{
if(n==O)
return O;
else
return n + sum( n );
}
3.54修改图3.10的投骰子程序,加进赌注。将程序中运行投骰于游戏的部分打包成函数。将bankBalance初始化为1000美元,提示游戏者加进赌注wager。用while循环检查wager是否小于或等于bankBalance,如果不是,则提示用户重新输入wager,直到wager有效。输入正确的wager之后,运行投般子游戏。如果游戏者赢,则在bankBalance中增加wager,并打印新的bankBalance。如果游戏者输,则在bankBalance中减去wager,并打印新的bankBalance。检查bmthBalance是否为0,如果是,则打印消息”Sorry.You busted!"。游戏进行时,可以打印一些聊天式消息,如”Oh,you're going for broke,huh?”或”Aw cmon,take a chance!”或”You're up big.Now's the time to cash in your chips?。
3.55编写一个C++程序,用内联函数clcleArea提示用户输人圆的半径,并计算和打印圆的面积。
3.56编写一个C++程序,用下面指定的两个函数将main中定义的变量count乘以三倍。然后比较两个方法。这两个函数如下所示:
a)函数tripleByReference按值调用传递count的副本,将副本乘以三倍,然后返回新值。
b)tripleByReference通过引用参数按引用调用传递count,通过别名(即参数引用)将count原副本乘以三倍。
3.57一元作用域运算符有什么作用?
3.58编写一个程序,用函数模板min确定两个参数的最小值。用整数、字符、浮点数对测试这个程序。
3.59编写一个程序,用函数模板max确定两个参数的最大值。用整数、字符、浮点数对测试这个程序。
3.60确定下列程序段是否有错,对每个错误,说明如何纠正。说明:有的程序段可能没错。
a) template < class A >
int sum( int numl, int num2, int num3 )
{
return numl + num2 + num3;
}
5) void printResults (int x, int y )
{
cout << "The sum is "<< x + y << '\n';
return x + y;
}
c) tweplate < A >
A product ( A numl, A num2, A num3 )
return num1 * num2 * num3;