《C++Primer》第五版习题答案--第六章【学习笔记】

ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考。

作者:cosefy

Date: 2020/1/16

第六章:函数

练习6.2:

  • 返回类型错误
  • 无返回类型
  • 形参名字应该不同
  • 函数体需要用花括号包含起来

练习6.4:

实现:编写函数,使得用户输入一个整数,main函数调用函数得到阶乘。

#include<iostream>
using namespace std; int fact(int n)
{
int result = 1;
while (n > 1)
result *= n--;
return result;
}
int main()
{
int a;
cout << "请输入一个整数,求阶乘: " << endl;
cin >> a;
cout << "结果:"<<fact(a) << endl;
return 0;
}

练习6.5:

#include<iostream>
using namespace std;
int fuc(int num)
{
return num > 0 ? num : -num;
}
int main()
{
cout << "请输入一个整数: " << endl;
int a;
cin >> a;
cout << "绝对值: " << fuc(a) << endl;
return 0;
}

练习6.6:

  • 形参和函数体内部的变量统称为局部变量,每当函数执行完就会释放;而局部静态变量存储在静态存储区,生命周期贯穿函数调用及之后的时间。

练习6.7:

#include<iostream>
using namespace std; int test1()
{
static int a = 0;
return a++;
}
int main()
{
for (int i = 1; i < 5; i++)
cout << test1() << endl;
return 0;
}

练习6.10:

#include<iostream>
using namespace std; void traverse(int* p, int* q)
{
int tmp;
tmp = *p;
*p = *q;
*q = tmp;
} int main()
{
int a = 20, b = 10;
cout << "Before: (a,b)=" << a <<" "<< b << endl;
traverse(&a, &b);
cout << "After: (a,b)=" << a <<" "<< b << endl;
return 0;
}

练习6.13:

前者是值传递,后者是地址传递,前者无法改变实参,后者可以改变实参。

练习6.15:

  • s是字符串,我们希望它不被修改,保持稳定,所以定义为常量,而occurs在程序中值需要修改
  • c是一个临时变量,没有必要进行地址传递,否则没有意义
  • 那么,occurs的值将一直保持0,而s有可能会被修改,并且s不再能接受常量字符串的实例化。

练习6.17:

#include<iostream>
using namespace std; bool find_upperalpha(const string& s)
{
for (auto c : s)
if (isupper(c))
return true;
return false;
}
void trf_tolower(string& s)
{
for (auto &c : s)
if (isupper(c))
c = tolower(c);
}
int main()
{
cout << "请输出一个字符串: " << endl;
string s;
cin >> s;
cout << "是否有大写字母:" << find_upperalpha(s) << endl;
trf_tolower(s);
cout << "把大写字母转化为小写: " << s << endl;
return 0;
}

练习6.18:

  • bool compare(matrix &m1,matrix &m2);
  • vector<int>:: iterator change_val(int ,vector<int>::iterator);

练习6.22:

 #include<iostream>
using namespace std; void fuc(int* &p1, int* &p2)
{
int* q = NULL;
q = p1;
p1 = p2;
p2 = q;
}
int main()
{
int a1 = 100, a2 = 200;
int* p1 = &a1;
int* p2 = &a2;
cout << "Before: " << *p1 << " " << *p2 << endl;
fuc(p1, p2);
cout<< "After: " << *p1 << " " << *p2 << endl;
return 0;
}

练习6.24:

不可以用值来传递数组。

void print(const int (&a)[10]){/**/}

练习6.25:

#include<iostream>
#include<string>
using namespace std; int main(int argc, char** argv)
{
string str;
for (int i = 1; i != argc; i++)
{
str += argv[i];
str += ' ';
}
cout << str << endl;
return 0;
}

练习6.27:

#include<iostream>
using namespace std; int get_sum(initializer_list<int> i1)
{
int sum = 0;
for (auto elem : i1)
sum += elem;
return sum;
}
int main()
{
initializer_list<int> i2{ 1,2,3,4,5,6 };
cout << get_sum(i2) << endl;
return 0;
}

练习6.32:

合法,把0-9拷贝到大小为10的数组中。

练习6.34:

如果输入为负数,则将一直递归下去。

练习6.35:

val--传入的值是自减之前的值。

练习6.39:

错误,错误,正确。

《C++Primer》第五版习题答案--第六章【学习笔记】的更多相关文章

  1. 《C++Primer》第五版习题答案--第三章【学习笔记】

    [C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...

  2. C++Primer第五版——习题答案目录

    目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...

  3. C++Primer第五版——习题答案详解(一)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

  4. C++Primer第五版——习题答案详解(二)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

  5. C++Primer第五版——习题答案详解(三)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

  6. C++Primer第五版——习题答案详解(四)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...

  7. C++Primer第五版——习题答案详解(五)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

  8. C++Primer第五版——习题答案详解(六)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第7章 类 练习7.1 class Sales_data { public: std:: ...

  9. C++Primer第五版——习题答案详解(七)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第8章 IO库 练习8.1 istream &iofunc(istream &a ...

随机推荐

  1. Arduino系列之按键模块(一)

    今天我将简单介绍按键模块计数的原理: 我们常用的按键及按键模块有2脚和4脚的,其内部结构如图所示,当按下按键时就会接通按键两端,当放开时,两端自然断开.                         ...

  2. 吴sir讲Python之 ——Pycharm的教程使用(二)

    欢迎您进入老吴的博客,如有联系请加QQ群:1055524279 Pycharm使用: 第一步:打开的界面: 选择代码路径和Python解释器版本 设置Pycharm菜单字体的大小: 设置编辑器里面字体 ...

  3. Asp.Net Core Identity 骚断腿的究极魔改实体类

    前言 默认的 Identity 实体类型在大多数时候已经基本够用,很多时候也只是稍微在 IdentityUser 类中增加一些自定义数据字段,比如头像.这次,我要向园友隆重介绍我魔改之后的 Ident ...

  4. Jmeter源码编译缺bouncycastle包

    Jmeter源码下载后install没问题,运行newDrive时会包包不存在,因为下载时缺少三个包没下载成功,点击链接下载并放到lib目录下即可 下载

  5. Shell: 定期存档日志文件

    简介 对于日志的分割删除我们一般会使用logratate,但对于项目较多的情况下,会让开发直接将日志分割写在代码里面,对于分割后过期的日志定期删除就很有必要,不然膨胀的日志会占满你的磁盘,将多余的日志 ...

  6. Redis 3.2.3: 集群3哨兵模式

    简介 Redis是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库.从2015年6月开始,Redis的开发由Redis Labs赞助,而2013年5月至2015年6月期 ...

  7. Nice to meet you for the first time .Why do I write blog!

    他们说我不修边幅,因为他们没看到我对细节的追求,他们说我技术宅,因为他们看不懂我的悲欢,他们说我无趣,是因为她们不知道,我在让世界变得更有趣,我把误解拿来自黑,我用工作承载兴趣,我是程序员,是用代码编 ...

  8. C++ 日期 & 时间(转)

    C++ 标准库没有提供所谓的日期类型.C++ 继承了 C 语言用于日期和时间操作的结构和函数. 为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 头文件.有四个与时间相关的类型:cloc ...

  9. idea快速创建一个类 实现一个接口

    一 创建一个接口类 二  点击接口名称 按alt + ent 三 选择implement interface 选项 完美!!!!!!!

  10. 数据算法 --hadoop/spark数据处理技巧 --(11.K-均值聚类 12. k-近邻)

    十一.k-均值聚类 这个需要MR迭代多次. 开始时,会选择K个点作为簇中心,这些点成为簇质心.可以选择很多方法啦初始化质心,其中一种方法是从n个点的样本中随机选择K个点.一旦选择了K个初始的簇质心,下 ...