博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第六章 6.3.2节练习
阅读量:2422 次
发布时间:2019-05-10

本文共 1084 字,大约阅读时间需要 3 分钟。

练习6.30

编译第200页的str_subrange函数,看看你的编译器是如何处理函数中的错误的。

解答:

这里对于两个错误,编译器肯定会提示,对于第一个肯定是错误提示,对于第二个错误有些编译器会将其视为错误,而有些会视为警告。

练习6.31

什么情况下返回的引用无效?什么情况下返回常量的引用无效?

解答:

返回局部变量的引用。

常量类型与返回不相符(?)

练习6.32

下面的函数合法吗?如果合法,说明其功能;如果不合法,修改其中的错误并解释原因。

int &get(int *arry, int index){return arry[index];}

int main(){

  int ia[10];

  for (int i = 0; i != 10; ++i){

    get(ia,i) = i;

  }

}

解答:

不合法,不能给调用的结果赋值。

练习6.33

编写一个递归函数,输出vector对象的内容。

解答:

#include 
#include
using namespace std;void fun(const vector
& ivec, size_t len){ if (len -1 > 0) fun(ivec, len - 1); cout << ivec.at(len - 1) << endl;}int main(){ vector
ivec{ 1, 2, 3, 4 }; fun(ivec, ivec.size());}
练习6.34

如果factorial函数的停止条件如下所示,将发生什么情况?

if (val != 0)

解答:

#include 
using namespace std;int factorial(int val){ if (val != 0) return factorial(val - 1)*val; return 1;}int main(){ cout << factorial(5) << endl;}
这里阶乘还会继续算下去。

对于这个函数来说,将条件语句该成题中所示,结果不会出现任何问题。

不同的是,多递归一次而已。如果改成 val != 1将会合原始代码递归的次数相同了。

练习6.35

在调用factorial函数时,为什么我们传入的值是val-1而非val--?

解答:

后置递减使用的是当前值,这里需要传递减1之后的值。

所以,这里可以使用--val。

转载地址:http://dwqlb.baihongyu.com/

你可能感兴趣的文章
深度学习入门及如何转型AI领域-CSDN公开课-专题视频课程
查看>>
基于骁龙 VR SDK的VR图形优化-CSDN公开课-专题视频课程
查看>>
让机器读懂你的意图——人体行为预测入门-CSDN公开课-专题视频课程
查看>>
应用Bluemix实现商业价值-CSDN公开课-专题视频课程
查看>>
传统IT环境与PaaS环境下的应用开发模式-CSDN公开课-专题视频课程
查看>>
SDCC 2017之大数据技术实战线上峰会-CSDN公开课-专题视频课程
查看>>
一个CloudCC生态软件包的诞生:带你体验CloudCC生态-CSDN公开课-专题视频课程
查看>>
极简运维,无限扩容——Serverless Monitoring技术公开课-CSDN公开课-专题视频课程...
查看>>
常用Android程序逆向与保护技术-CSDN公开课-专题视频课程
查看>>
【Python系列之】Python Django 框架初次体验-CSDN公开课-专题视频课程
查看>>
Hadoop 3.0 新特性原理及架构分析-CSDN公开课-专题视频课程
查看>>
3小时掌握数据挖掘-CSDN公开课-专题视频课程
查看>>
Web 全栈全端技术体系与软件四层结构-CSDN公开课-专题视频课程
查看>>
AI学习挑战直播课:成功案例分享及行业趋势分析-CSDN公开课-专题视频课程
查看>>
【UI/UE设计师】banner设计原则-CSDN公开课-专题视频课程
查看>>
自然语言处理实战——LSTM情感分析-CSDN公开课-专题视频课程
查看>>
Gin使用的json包
查看>>
Gin的路由
查看>>
如何安全地退出goroutine
查看>>
context.Context
查看>>