《C++面向对象程序设计双语教程(第3版)-参考答案【ch02】Basic Failities - Shifting from C to C++ Programs.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计双语教程(第3版)-参考答案【ch02】Basic Failities - Shifting from C to C++ Programs.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ShjftingChapter 2 Bas ic Faci I ities from C to C+ Programs1. Answer the fol lowing questions:1-5 bdcad6. ait:2. Read the fol lowing program and comp Iete册血11& vi6如丽. _ . . . _ _ _ _ . J _ * , * * : , .:. y. :.:;.: ;?.,*. ;*,;- *, ,;V.- !.*: : :using namespace std;int& put(int n); /put value into th
2、e array. -.* , . * * ,.;mt get(int n); /obtain a value from the array, , . * (. .* * .*. .int vals101;intend;二: . : * . * *_*.* * . J a : / .1 voidmamO(put(0) =10; /put value into the array .: . * * *_ * * ( . *, , : . . . /.- - - , : .put =20; put =30;cout get(O)eiidl;cout get(l)endl; 涔泰西琮萌冬0山;1mmm
3、;,mput(12) = l; /out of bound 8kget(12)vvendl; . .略。3.Wr ite out the output of the fol lowing programs. (1)int i当后蕊港;: : O:二:. : :二.;:二mt&r-1; . . : . . . a a .: . . . . . _ . , . . . . . . : .、. : . :口=9;三二三三:三.= A 工 : : : :丁1 = 10二二二?.:;coUtvvK之;iWVeiidl; :;:; . . . , . . .cout&r 0:#有两个实根xl =(-b +
4、 math, sqrt(discriminant) / (2*a)x2 = (-b - math, sqrt(discriminant) / (2*a) return 2, xl, x2elif discriminant 二二 0:#只有一个实根xl = -b / (2*a)return 1, xl, Noneelse:#没有实根return 0, None, None#测试a = 2b = -5c = -3root_count, xl, x2 = solve_quadratic_equation(a, b, c)print (、根的数量: root_count)if root_count 0
5、:print (、根 1: xl)if root count 1:print (、根 2: x2)以上函数使用判别式确定根的情况,返回根的数量以及根的数值(如果有的话)。若根 数大于3则会打印根的值。14. Write a program that pI ays the game “guess the number? as fol lows. Your programchooses the number to be guessed by seIecting an integer randomly in the range 1 to 1000. The program then d i spI
6、ays the fol lowing:“I have a number between 1 and 1000. Can you guess my number? Please type your number :99The pIayer then types a guess. The program responds with one of the fol lowing after every guess:)z )z 12 3 /( z( z(xBingo! You guessed the number.Too h i gh. Try aga in.Too 1ow. Try aga in.An
7、d the program counts the number of guesses that the pIayer makes.(1) I f the number i s 5 or fewer, pr i nt “You know the secret?11(2) If the pIayer guesses the number i n 10 tr i es, then pr i nt “You got Iucky!(3) If the pIayer makes more than 10 guesses, then pr i nt “You shouId be abIe to do bet
8、ter.当玩家猜测的数字小于选择的数字时,程序会回答:“太小了,请重新猜测J当玩家猜测的数字大于选择的数字时,程序会回答:“太大了,请重新猜测J当玩家猜测的数字等于选择的数字时,程序会回答:“恭喜,你猜对了!”并显示猜测了 多少次才猜对。以下是一个示例的Python代码:pythonimport randomdef guess_number():secret number = random, randint(1, 1000)guess_count = 0 print (我有一个数字在1到1000之间。你能猜出我的电话号码吗? whileTrue:guesscount +二 1elif gues
9、s secret_number: else:guess = int (input (、请输入您的号码: if guess secret_number:print(、太小了,请重新猜测。print(太大了,请重新猜测。print (恭喜,你猜对了你猜了 guess_count, 次。breakguess_number ()这段代码使用random, randint。,1000)来在1到1000之间随机选择一个整数作为 要猜测的数字。然后,通过不断循环,玩家可以输入他们的猜测,程序会根据猜测的大小给 出相应的回答,直到猜对为止。最后会显示玩家猜了多少次才猜对。(2):K:,:;.: : * ;-,
10、:/:,.: ,;?.:士二:二:?: :,-, ,、W, :;:讪京受5,苗三;6襄十二 . J / a. .*.*. *. * : : 二讨三Q 痣沱求耍河阂:土:密.袋:W 孑淑二诵。画历证M前反装;:陵疑泰腔;然小犯施bi镖%奖6簸苑海熊.泰 ;:靖UU::球然:涣学可也:江可 工:十二:,:己;:.二,:.七:三旌5就面面0密谈逐泊定滂黎懑诙哥. * . e * * * * * * * , * * * * * 丁 . W . . .* . . * .:, 名m沙smgmySpMe:;a;为三营片x . , . , /. * . r . . ? 您您鸿叫里崂峭独亡诳密, 子访oKcac
11、V9fyenE;1 .1. . . e * * * * , * * _ , . * * * * * 4 . .,. . . . .、 . . . , / * * * * . *, , . . , * * - , .:少;. 9.V /.*. ? * , J * * 2 mySpace:a=5yourSpace:b=98. 3#include . . . . . . .,J.using namespace std;void Tcst(int&. int); , , . ; . voidmamQ. . a 4. . j. . . . . ,. ., . , ;.:., .;intx= 12;了.
12、. . . . . . . ,.;mty= 14; 一:: .:;: ;:, :.壬.: / -:Test(x,y); ?;.; ; .?,:f ./-:. . : After the first call of Te钝 the variables equal K x y chdl; . 二工20; : ,.:二.一. :.;. . J.二二 y=22;: . . . - * , * * . . , 1 .,X 2 . . * , . . . . . , , . , . . . :coutnAficr the second call of Test, the variables equal n
13、 x y endl; .a、 . . ; void Test(int& a, intb),; . :;.; 丁,; ;e., .J ,. , . . . . i. . . . . . -* .、 , ” . . .,.” ::: a=3;二二二二, : :/.:. , . . . ., . . , 1 . :a+= 2;./.:; -.a*5; :二.二二.二; : : I.:, .::.:;,boutIn fimetion Test, tfie variable equal W 在 v b W endl;略。4. Wr i te a funct i on that swaps two i n
14、teger numbers and two doub I e fI oat i ng po i nt numbers. Hint: us i ng reference and po i nter as the parameters.当涉及到交换两个整数和两个双浮点数时,我们可以定义一个函数,接受四个参数,即 两个整数和两个双浮点数的引用或指针。下面是一个示例函数的实现:cppttinclude void swap(int& a, int& b, double* c, double* d)inttemp = a;b;temp;double tempi = *c;*c*d*d;tempi;int
15、main () int numl = 10;int num2 = 20;double deci = 1.5;double dec2 = 2.5;std:cout Before swapping: std:endl;std:cout uml = numl num2 = num2 std:endl;std:cout decl = deci dec2 = dec2 std:endl;swap(numl, num2, &decl, &dec2);std:cout After swapping: std:endl; std:cout uml = numl num2 = num2 std:endl;std
16、:cout decl = deci dec2 = dec2 std:endl;return 0;在上面的示例中,我们定义了一个swap、函数,接受两个整数的引用(int&、类型), 以及两个双浮点数的指针(double*类型)。在函数内部,我们使用一个临时变量来交换整 数的值,并使用指针来交换双浮点数的值。在main函数中,我们声明了两个整数 numl和 num2 ,以及两个双浮点数 deci和 dec2然后,我们调用了飞wap、函数,并传递这些变量的地址作为参数。最后,我们输出 交换后的值,以验证交换是否成功。请注意,通过使用引用(int& )和指针(double*),我们可以直接修改原始变
17、量的 值,而不创建副本。这样可以节省内存,并且函数内的修改会反映在main函数中。5. Write a program that has three over Ioad i ng funct i ons display to produce the i r outputs. The f i rst funct i on returns a doubIe type. The second funct i on returns an i nt type. The th i rd funct i on returns a char type.以下是一个示例程序,展示了三个重载函数和它们的输出:CPP
18、 ttinclude /重载函数1:返回双重类型double display(double num) std: :cout 双重类型函数被调用,输入参数为: num std: :endl; return num;/重载函数2:返回int类型int display(int num) std: :cout int类型函数被调用,输入参数为: num std: :endl; return num;/重载函数3:返回字符类型char display(char ch) std: :cout 字符类型函数被调用,输入参数为: ch std: :endl; return ch;)int main() dou
19、ble doubleNum = 3. 14;int intNum = 42; char character =A;/调用重载函数1double doubleResult 二 display(doubleNum);std: :cout 、双重类型函数的返回值为: doubleResult std: :endl;/调用重载函数2int intResult = display(intNum);std: :cout int 类型函数的返回值为: intResult std: : endl;/调用重载函数3char charResult = display(character);std: :cout 、
20、字符类型函数的返回值为: charResult std: :endl;return 0;运行上述程序,将输出如下:双重类型函数被调用,输入参数为:3. 14双重类型函数的返回值为:3. 14int类型函数被调用,输入参数为:42int类型函数的返回值为:42字符类型函数被调用,输入参数为:A 字符类型函数的返回值为:A这是一个简单的示例,展示了如何通过重载函数实现不同类型参数的输出。你可以根据 需要自定义这些函数,并根据实际情况返回不同类型的值。6. Wr i te a funct i on that takes an i nteger vaIue and returns the number
21、 with i ts digits reversed. For examp I e, given the number 1234, the funct i on shouId return 4321.以下是一个将整数反转的函数示例:pythondef reverse num(num):#将整数转换为字符串并进行反转reversed_str = str(num)::-1#将反转后的字符串转换为整数 reversed_num = int(reversed_str) return reversed num你可以使用这个函数来反转一个整数,例如:pythonnum = 1234reversed_num
22、 = reverse_num(num) print (reversed num)输出结果将会是4321。7. Wr ite a funct i on qua I i tyPo i nts that i puts a students average and a returni ng va Iue4 if a students average i s 90-100, 3 if the average i s 80-89; 2 i f the average i s 70-79, 1 i f the average i s 60-69, and 0 i f the average i s Iowe
23、r than 60.下面是一个实现你描述的功能的函数代码:pythondef等级评定(平均值):if平均值)=90 and平均值=100:return、学生的平均值是A return、学生的平均值是B return 学生的平均值是C return 学生的平均值是Delif平均值 =80 and平均值elif平均值=70 and平均值elif平均值=60 and平均值else:二 89:=79: maxval:max_val = numif num = 0:sum_positive +二 num else:sum_negative += numreturn sumpositive, sum_ne
24、gative#测试函数numbers =1, -2, 3, -4, 5, 6, -7, 8, 9, -10 positivesum, negativesum = sum of numbers(numbers) print (、数字之和 0=0) : positive_sum)print(、数字之和(= 0:sum_positive += numelse:sum_negative += num return sum_positive, sum_negative#测试函数numbers = -4, 6, 2, -8, 10, -3, 5, 7, -1, 9positive_sum, negativ
25、e_sum = sum_of_numbers(numbers)print (、大于等于0的数字之和: positive_sum)print (、小于 0 的数字之和: negative_sum) 、运行结果:大于等于0的数字之和:39 小于0的数字之和:-16这个函数会遍历输入的10个整数,将于等于0的数字累加到、suni_positive变量中, 将小于0的数字累加到sum_negative变量中。最后,函数返回这两个和。11. Write a funct i on to ca I cu I ate the calorie of I unch. The user i nputs three
26、I i nes. Each I i ne has a character (M i s for meat, V i s for vegetabIe, D i s for dessert) and a calorie vaIuc. Theprogram outputs the totaI calorie vaIue of Iunch.pythondef calculate_calories():total_calories = 0for _ in range(3):line = input (、请输入字符和卡路里值(M/V/D卡路里):line =line, split ()character
27、二 line0calories = int(linel)total calories += caloriesprint (、午餐的总卡路里值: total_calories)calculate_calories () 、请注意,这个例子假设用户将会依次输入三行信息,并且每一行都包含一个字符和一个 卡路里值,中间用空格隔开。函数会依次读取每一行的信息,并将卡路里值累加到总卡路里 值中,最后输出总卡路里值。12. According to the input string, count the number of digit and a Iphabet and output them.pythondef count_digits_and_letters(input_str):digitcount = 0letter_count = 0 for char in input_str: