C++Primer第五版 6.1节练习
练习6.1;实参和形参的区别是什么?
通俗解释: 实参是形参的初始值。编译器能以任意可行的顺序对实参求值。实参的类型必须与对应的形参类型匹配。
详解1) 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。 ) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。 ) 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。 ) 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。
练习6.2:请指出下列函数哪个有错误,为什么?应该如何修改这些错误呢?
(a)int f() { string s; //… return s; } (b) f2(int i){/*…*/} (c) int calc(int v1, int v2) /*…*/ } (d) double square(double x) return x*x;
修改后Code (a)string f() { string s; //… return s; } (b)int f2(int i){/*…*/} (c) int calc(int v1, int v2) {/*…*/ } (d) double square(double x) {return x*x;}
练习6.3:编写你自己的fact函数,上机检查是否正确。
#include <iostream> #include <stdexcept> using namespace std; void Fact(int val) { int Result = 1; if (val > 0) { int j = 0; for (j = val; j > 0; --j) Result *= j; cout << "The result is: " << Result << endl; } if (val == 0) { Result = 1; cout << "The result is: " << Result << endl; } if (val < 0) { try{ throw runtime_error("wrong inputing : val can not less than zero !!!"); //装个X,val<0时抛出一个异常,捕获异常 }catch(runtime_error err){ cout << err.what() << endl; } } } int main() { int val; while (cin >> val) Fact(val); return 0; }
练习6.4:编写一个与用户交互的函数,要求用户输入一个数字,计算生成该数字的阶乘。在main函数中调用该函数。
#include <iostream> #include <stdexcept> using namespace std; void Fact() { int val; cout << "input a number: " << endl; while (cin >> val) { if (val > 0) { int Result = 1; for (;val > 0; --val) Result *= val; cout << "The result is: " << Result << endl; } else if (val == 0) cout << "The result is: 1" << endl; else try{ throw runtime_error("wrong inputing :val can not be less than zero!!!"); } catch(runtime_error err){ cout << err.what() << endl; } } } int main() { Fact(); return 0; }
练习6.5:编写一个函数输出实参的绝对值。
#include <iostream> using namespace std; void ABS() { int val; cout << "input a number :" << endl; while (cin >> val) { if (val >= 0) cout << "The absolute value is: " << val << endl; else cout << "The absolute value is: " << -val << endl; } } int main() { ABS(); return 0; }
C++Primer第五版 6.1节练习的更多相关文章
- 实验楼课程管理程序-深入学习《C++ Primer第五版》实验报告&学习笔记1
本片博客为实验楼的训练营课程深入学习<C++ Primer第五版>的实验报告和学习笔记. 原课程地址为:https://www.shiyanlou.com/courses/405# 原文出 ...
- C++ 11 从C++ primer第五版的学习笔记
1. auto (page107) auto 推断会忽略const const int ci = i, & cr = ci; auto b = ci; // b is an int (to ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- C++Primer第五版 3.2.3节练习
练习 3.6:编写一段程序,使用范围for语句将字符串内的所有字符用X代替. #include<iostream> #include<string> using namespa ...
- C++Primer第五版 3.5.1节练习
练习 3.27:假设txt_size是一个无参数的函数,它的返回值是int.请回答下列哪个定义是非法的?为什么? Unsigned buf_size = 1024; (a) int ia[buf_si ...
- C++Primer第五版学习笔记
<C++ Primer>Learning Note 程序实例下载地址:http://www.informit.com/title/0321714113 第一章 开始 ...
- C++学习书籍推荐《C++ Primer 第五版 (英文)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer(英文版)(第5版)>是全球最畅销的C++图书.这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程 ...
- C++Primer第五版——习题答案目录
目前正在刷<C++Primer>这本书,会在博客上记录课后习题答案,答案仅供参考. 因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 目录地址 使用的系统为:win 10,编译器:VS ...
- C++Primer第五版——习题答案和解析
感谢原文博主的分享:https://blog.csdn.net/misayaaaaa/article/details/53786215 新手入门必看的书.知识是一个系统化并且相互关联的体系,零散的东西 ...
随机推荐
- [转]【Linux】Linux 目录结构
初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp ...
- 为什么有的文件从SVN上更新不下来
前几天使用eclipse的插件从SVN上更新代码,将全部的代码更新下来后启动项目,前台报错说有些js文件找不到,后来检查我的工程里确实没有那些文件,经过检查发现SVN上却有这些文件,那为什么更新不下来 ...
- 2019-6-5-WPF-隐藏系统窗口菜单
title author date CreateTime categories WPF 隐藏系统窗口菜单 lindexi 2019-06-05 17:26:44 +0800 2019-06-05 17 ...
- HashMap深入理解
Map 的实现类有 HashMap.LinkedHashMap.TreeMap.IdentityHashMap.WeakHashMap.Hashtable.Properties 等等. 关于 Hash ...
- Linux 内核PCI去除一个设备
一个 PCI 可用多个不同的方法被从系统中去除. 所有的 card-bus 设备在一个不同的物 理因素上是真正的 PCI 设备, 并且内核 PCI 核心不区分它们. 允许在机器运行时加减 PCI 设备 ...
- JavaSE基础---异常
异常 Throwable----具备可拋性:就是该体系中的类和对象都可以被关键字throw或throws所操作. |---Error ---错误,一般不编写针对性处理方式 |---Exception- ...
- PowerShell 使用 WMI 获取信息
在 PowerShell 可以很容易使用 WMI 拿到系统的信息,如果有关注我的网站,就会发现我写了很多通过 WMI 拿到系统的显卡,系统安装的软件等方法,本文告诉大家如果通过 PowerShell ...
- vue 插件大全
UI组件 element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开 ...
- geoip ip2region2 with spark
上一篇文章中 我使用 maxmind的免费库开发了一个waterdrop的 插件,测试数据发现,国内的有些市级还是不准确,而且香港并不是显示中国,这就不友好了. 找了一下,发下 ip2region 这 ...
- wireshark使用心得 centos7安装wireshark: yum install wireshark wireshark-gnome
centos7 安装wireshark 安装 yum install wireshark yum install wireshark-gnome 关于pcap文件的文件解析网上资料有很多,我在这就不说 ...