(一〇七)第八章复习题

1.哪种函数适合定义为内联函数?

答:短小的,执行速度快的,占用内存小的适合。还有非递归的

 

2.假如song()函数的原型如下:

void song(const char* name, int times);

a.如何修改原型,使times的默认值为1?

b.函数定义需要做哪些修改?

c.能否为name提供默认值“O.My Papa”?

 

答:a。 修改成:void song(const char*name,int times=1);

b。函数定义无需修改

c。可以,但前提是为times提供默认值,且在调用时,应符合带默认参数的函数的调用方式。函数原型如改成:

void song(const char*name="O.My Papa", int times =1);

答案没有加const,但我觉得应该加上吧。

 

3.编写iquote()的重载版本——显示其用双引号括起的参数。编写3个版本:一个用于int参数,一个用于double参数,一个用于string参数。

答:

void iquote(int a)

{
cout<<"\""<<a<<"\'"<<endl;

}

void iquote(double a)

{
cout<<"\""<<a<<"\""<<endl;

}

void iquote(string a)

{
cout<<"\""<<a<<"\""<<endl;

}

 

4.下面是一个结构模板:

struct box

{
char maker[40];

float height;

float width;

float length;

float volume;

}

a.请编写一个函数,它将box结构的引用作为形参,并显示每个成员的值。

b.请编写一个函数,它将box结构的引用作为形参,并将volume成员的值设为其他3边的乘积。

 

答:

//a

void abc_1(const box& a)

{
cout<<a.maker<<endl;

cout<<a.height<<endl;

cout<<a.width<<endl;

cout<<a.length<<endl;

cout<<a.volume<<endl;

}

 

//b

void abc_2(box& a)

{

a.volume=a.height*a.width*a.length;

}

 

 

5.为让函数fill()和show()使用引用参数,需要对程序清单7.15做哪些修改?

答:

原型修改为:

void fill(std::array<double,Seasons>&);

void show(std::array<double,Seasons>&);

函数定义修改为:

void fill(std::array<double,Seasons>&pa)

{
using namespace std;

for (int i = 0; i < Seasons; i++)

{

cout<< "Enter "<< Snames[i]<<" expenses: ";

cin>>pa[i];

}

}

 

void show(std::array<double, Seasons> &da)

{
using namespace std;

double total = 0.0;

cout<<"\nEXPENSES\n";

for (int i = 0; i < Seasons; i++)

{

cout<< Snames[i]<<": $"<<da[i]<<endl;

total+= da[i];

}

cout<<"Total Expenses: $"<<total<<endl;

}

 

函数调用改为:

fill(expenses);

show(expenses);

 

 

6.指出下面每个目标是否可以使用默认参数或函数重载完成,或者这两种方法都无法完成,并提供合适的原型。

a。mass(density,volume)返回密度为density、体积为volume的物体的质量,而mass(density)返回密度为density、体积为1.0立法米的物体的质量。这些值的类型都为double。

//答:

//可以用函数重载完成,也可以用默认函数完成。

//默认函数如下:

//double mass(double a, double b=1);

//函数重载如下:

//double mass(double a,double b);

//double mass(double a);

 

b.repeat(10,"I'm OK")将指定的字符串显示10次,而repeat("But you're kind of stupid")将指定的字符串显示5次。

//答:

//只能用函数重载完成,不能用默认函数,原型为:

//void repeat(int,string);

//void repeat(string);

 

c。average(3,6)返回两个int参数的平均值(int类型),而average(3.0,6.0)返回两个double值的平均值(double类型)。

//答:

//只能用函数重载完成,原型为:

//int average(int,int);

//double average(double,double);

 

d。mangle("I'm glad to meet you")根据是将值赋给char变量还是char*变量,分别返回字符1和指向字符串“I'm glad to meet you”的指针。

//答:

//两种方法都无法完成

 

 

7.编写返回两个参数中较大值的函数模板。

答:

template<class xx>xx bigger(xx a,xx b)

{
xx c=(a>b)?a:b;

return c;

}

 

 

 

8.给定复习题6的模板和复习题4的box结构,提供一个模板具体化,它接受两个box参数,并返回体积较大的一个。

答:

template<>box mass(box a,box b)

{

return (a.volume>b.volume)?a:b;

}

 

 

 

9.在下述代码(假定这些代码是一个完整程序的一部分)中,v1、v2、v3、v4和v5分别是哪种类型?

int g(int x);

....

float m = 5.5f;

float &rm = m;

decltype(m)v1 = m;

decltype(rm)v2 = m;

decltype((m)) v3 = m;

decltype(g(100))v4;

decltype(2.0*m)v5;

答:v1为float、v2为float&,v3为float(错,为float&,核对表的第三步),v4为g(100)这个函数的返回值的类型int(做题的时候没有注意第一行)(核对表的第二步),v5为double(核对表的第一步)。

 

时间: 2024-10-22 06:29:13

(一〇七)第八章复习题的相关文章

(一〇一)第七章编程练习(附①至⑦章学习笔记下载链接)

<C++ Primer Plus第6版中文版>学习笔记(第一 ~第六章) http://download.csdn.net/detail/qq20004604/9359697 <C++ Primer Plus第6版中文版>学习笔记(第七章)   http://download.csdn.net/detail/qq20004604/9381056 1.编写一个程序,不断要求用户输入两个数,直到其中的一个为0.对于每两个数,程序将使用一个函数来计算它们的调和平均数,并将结果返回给mai

(一〇〇)第七章复习题

1.使用函数的3个步骤是什么? 答:函数原型,函数定义,函数调用. 答:定义函数,提供原型,调用函数.     2.请创建与下面的描述匹配的函数原型. a.igor()没有参数,且没有返回值. b.tofu()接受一个int参数,并返回一个float c.mpg()接受2个double参数,并返回一个double d.summation()将long数组名和数组长度作为参数,并返回一个long值 e.doctor()接受一个字符串作为参数(不能修改该字符串),并返回一个double值. f.of

Flash基础理论课 第八章 缓动与弹性运动Ⅰ

返回"Flash基础理论课 - 目录" 很难相信我们居然用了七章才把基础的内容介绍完,现在进入第八章,这里是高级内容的起点.从这里开始内容也开始变得越来越有趣了,前面的章节都是些常用的概念与技术.从今天开始,每章只着重介绍一两种特殊的运动. 本章将介绍缓动运动(成比例速度)与弹性运动(成比例加速度),不用担心它们只是两个名词术语,这章可以快速地略读.我会给出很多例子程序,可以使大家充分了解这项技术的强大. 成比例运动 缓动(ease)与弹性(spring)联系紧密.这两种方法都是将对象

ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 1 学习资源 用户在学习和应用过程中,可以参考的资源如下: 1. ArcGIS资源中心 http://resources.arcgis.com/en/home/ 2. Esri中国在线支持中心http://support.esrichina.com.cn/ 3. ArcGIS知乎社区 http://zhihu.esrichina.com.cn/ 4. 优酷视频ht

命令行星期二——第七部分

命令行星期二--第七部分 嗨,极客们,我已经检查了我们的课程,今天我们在八章课程里的第七部分.这就是说下周二我们还有一次课程,但也是最后一次"命令行星期二"课程.所以,今天,我们讨论一些关于权限的问题! 众所周知,一台机器可能会有多名用户共同使用.为了保证用户之间互不干扰,就需要分配不同的权限.我们已经讨论了文件权限的问题,你可以轻轻点此回顾一下: chmod chmod命令被用来修改目录或者文件的权限.为了修改权限,首先你得输入chmod命令,之后你得输入规范的权限修改,然后你就可以

ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第七章_使用ArcGIS进行空间分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 使用ArcGIS进行空间分析1.1 GIS分析基础 GIS的六大功能是数据获取.存储.查询.分析.表达.输出.在前面的内容里已经介绍了使用ArcGIS进行数据获取.存储.查询.表达和输出的过程,本章将介绍如何在ArcGIS中进行地理分析.分析是GIS的核心和灵魂,是GIS区别于一般的信息系统.CAD或者电子地图系统的主要标志之一. GIS分析,就是研究数

微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现

接着上面微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现.(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程序名片夹详情页开发,第六章:「我」的页面开发,第七章:微信小程序编辑名片页面开发) 先来看看今天的整体思路: 进入分组管理页面-->点击新建分组新建 进入到未分组页面基本操作 进入到已建分组里面底部菜单栏操作-->从名片夹中添加进行操作. 理清完基本流程我们开始开发.首先整个布局可以先看下,我再一步步讲. 静态布

七个保障Windows7操作系统安全的方法

  与Windows Vista相比,微软的Windows 7操作系统具有更强的安全性.如今对用户产生威胁的因素通常是由于恶意软件的攻击和用户缺乏保护意识造成的. 下面所列举的七种方法通过简单的安装设置就可以完成: 1.安装反病毒木马软件 对用户而言,威胁通常来自于木马.恶意软件.假冒的病毒扫描程序.不管你是计算机专家还是菜鸟,装备一款合适的杀毒软件是十分有必要的,同时记住保持杀毒软件的更新,防范新的恶意程序攻击. 2.开启IE8智能过滤功能 浏览器正逐渐成为最容易被攻击的目标,Windows

一张图看懂阿里云网络产品[七]共享流量包

共享流量包是BGP公网流量的预付费套餐,价格比后付费流量更低,并支持闲时峰谷流量包,能大大降低用户的BGP公网流量成本,是企业必备的省钱利器.本图将为各位全面讲解共享流量包产品. 系列文章持续更新中,敬请关注 [一]网络产品概览 [二]VPC [三]EIP [四]NAT网关 [五]负载均衡SLB [六]共享带宽 [七]共享流量包 [八]高速通道 [九]VPN网关 [十]云托付 [十一]全球加速