《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. 虚拟机 ubuntu系统忘记密码如何进入

    重启 虚拟机 按住shift键 会出现下面的界面 按住‘e’进入下面的界面往下翻 更改红框勾到的字符串为:  rw init=/bin/bash 然后按F10进行引导 然后输入 :”passwd”  ...

  2. svg图片在vue脚手架vue-cli怎么使用

    第一种 使用vue2-svg-icon npm install vue2-svg-icon --save-dev` 下载之后在mian.js引入 名字可以随便起,这里我起icon 引入svg资源 这时 ...

  3. django中navie time 和 aware time的使用和转换

    在django中有关时间被分为navie time 和 aware time两种,前者指的是不带时区标记的时间格式,后者被认为是带有时区标记的时间格式.在django框架的setting.py文件中 ...

  4. 用什么库写 Python 命令行程序?看这一篇就够了

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  5. Struts(六)

    JSON(JavaScript Object Notation)    1.一种轻量级的数据交换格式    2.通常用于在客户端和服务器之间传递数据    3.jQuery的所有参数都是以JSON格式 ...

  6. DLL/EXE查看工具Dumpbin

    一般情况下,我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息,可以使用VS自带的工具dumpbin: 可以直接在命令行下输入dumpbin就可以查看他的使用说明,如果未显示,可以先 ...

  7. Comb结合android开发

    https://blog.csdn.net/qq_29665509/article/details/79272441 参考comb官方文档 https://blog.csdn.net/qq_29665 ...

  8. 关于Android的hellowrd中出现的r文件错误

    当你的androidAPI 由2.1版本更换成2.2版本时:res/vavlues/styles.xml中使用的android:WindowTitle会报以下异常,error: Error retri ...

  9. 深入理解JVM(学习过程)

    这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 2020年02月06日22:43:0 ...

  10. JavaScript 构造函数的继承

    JavaScript 构造函数的继承 在上一篇文章中讲述了 JS 对象.构造函数以及原型模式,这篇文章来讨论下 JavaScript 的继承 继承是 OO 语言中的一个最为人津津乐道的概念.许多 OO ...