C++ primer Plus(第六版)第八章 函数探幽 章节编程练习答案

1.编写一个通常接受一个参数(字符串的地址),并打印该字符串的函数。
    然而,如果提供了第二个参数(int)类型,且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数。
   (注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数)。
   是的,这是一个非常可笑的函数(我怎么不觉得可笑,手动微笑),但它能让您使用本章介绍的一些技术。
   在一个简单的程序中使用该函数,以演示该函数是如何工作的。

① 不用string类

② 用string类

2.CandyBar结构包含3个成员。第一个成员存储candy bar的品牌名称;第二个成员存储candy bar的重量(有可能有小数);
第三个成员存储candy bar的热量。请编写一个程序,它使用一个这样的函数,即将CandyBar的引用、char指针、double和int作为参数,
并用最后3个值设置相应的结构成员。最后3个参数的默认值分别为"Millennium Munch"、2.85 和350。
另外,该程序还包含一个以CandyBar的引用为参数,并显示结构内容的函数。请尽可能使用const。

3.编写一个函数,它接受一个指向string对象的引用作为参数,并将该string对象的内容转换为大写,
为此可使用cctype中的字符函数toupper()。然后编写一个程序,他通过使用一个循环让您能够用不同的输入来测试这个函数。
该程序的运行情况如下:
Enter a string (q to quit): go away
Go AWAY
Next string (q to quit): good grief!
GOOD grief!
Next string (q to quit): q

Bye.

① 返回为空

② 返回引用

4.下面是一个程序框架

请提供其中描述的函数和原型,从而完成该程序。注意,应有两个show()函数,每一个都使用默认参数。
请尽可能使用const参数。set()使用new分配足够的空间来存储指定的字符串。这里使用的技术与设计和实现类时使用的相似。
(可能还必须修改头文件的名称,删除using编译指令,这取决于所用的编译器)

5.编写模板函数max5(),它将一个包含5个T类型元素的数组作为参数,并返回数组中最大的元素
   (由于长度固定,因此可以在循环中使用硬编码,而不必通过参数来传递)。
   在一个程序中使用该函数,将T替换为一个包含5个int值的数组和一个包含5个double值的数组,以测试该函数。

6.编写模板函数maxn(),它将由一个T类型元素组成的数组和一个表示数组元素数目的整数作为参数,并返回数组中最大的元素。
   在程序对它进行测试,该程序使用一个包含6个int元素的数组和一个包含4个double元素的数组来调用该函数。
   程序还包含一个具体化,它将char指针数组和数组中指针数量作为参数,并返回最长的字符串的地址。
   如果有多个这样的字符串,将返回其中第一个字符的地址。使用由5个字符串指针组成的数组来测试该具体化。

7.修改程序清单8.14 ,使其使用两个名为SumArray()的模板函数返回数组元素的总和。
   而不是显示数组的内容。程序应显示thing的总和以及所有debt的总和。
   程序清单8.14 如下

修改后:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值