《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. Linux文件内容重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字, ...

  2. SQLException:The server time zone

    报错信息如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represen ...

  3. 1240: 函数strcmp的设计

    #include <string.h>#include <stdio.h>int mycmp(char*s1,char*s2);int main(){ int sum; cha ...

  4. 练习2-13 求N分之一序列前N项和 (15 分)

    练习2-13 求N分之一序列前N项和 (15 分) 输入在一行中给出一个正整数N. 输出格式: 在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位.题目保证计算结果不超过双精度范 ...

  5. python学习记录(九)

    0911--https://www.cnblogs.com/fnng/archive/2013/05/08/3066054.html 魔法方法.属性 准备工作 为了确保是新型类,应该把_metacla ...

  6. 20194651—自动生成四则运算题第一版报告chris

    1.需求分析: (1)自动生成四则运算算式(+ - *  /),或两则运算(+  -). (2)剔除重复算式. (3)题目数量可定制. (4)相关参数可控制. (5)生成的运算题存储到外部文件中. 2 ...

  7. POJ_2941_矩阵

    题目描述: 每组数据给定一个n*n的矩阵,选定不同行不同列的n个元素,求和,若所有选法所产生的和相等,则输出 homogeneous,否则输出not homogeneous. 描述: 数据挺大,爆搜肯 ...

  8. socket实现文件上传(客户端向服务器端上传照片示例)

    本示例在对socket有了基本了解之后,可以实现基本的文件上传.首先先介绍一下目录结构,server_data文件夹是用来存放客户端上传的文件,client_data是模拟客户端文件夹(目的是为了测试 ...

  9. ElasticSearch基础入门学习笔记

    前言 本笔记的内容主要是在从0开始学习ElasticSearch中,按照官方文档以及自己的一些测试的过程. 安装 由于是初学者,按照官方文档安装即可.前面ELK入门使用主要就是讲述了安装过程,这里不再 ...

  10. k8s系列---Worker节点扩容

    其他有关内容 安装:参考https://www.cnblogs.com/dribs/p/9082458.html 集群故障重置:参考https://www.cnblogs.com/dribs/p/10 ...