《C++ primer plus》第5章练习题】的更多相关文章

1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i; printf("ch[%d] = %c\n", i-97, ch[i-97]); } printf("That is all! thanks~\n"); return 0; } 这是之前写的,有点乱,改了些如下: #include int main(void) {…
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; printf("Convert mins to hours and minutes\n"); printf("Please enter the mins: \n"); scanf("%d", &mins); while (mins >…
Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[20]; printf("My Handsome Master, please enter your name: \n"); scanf("%s %s", &name, &family); //名字和姓氏一起读的话,需要先输入名字再输入姓氏,中间要有空白字…
1.输入两个整数,输出两个整数之间所有整数的和,包括两个整数. #include<iostream> using namespace std; int main() { int num1, num2,num_left,num_right,sum = 0; cout << "Input two integers:" << endl; cin >> num1 >> num2; //比较大小,从小的开始累加 num_left = n…
注:有的题设条件自己改动了一下,比如英寸英尺改成米和厘米,部分题目自己加了点额外要求. 1.要求用户输入身高(m),用下划线提示用户输入,将身高转化成"米"加"厘米"的形式输出,用const限定符设定转化因子. #include<iostream> using namespace std; const int cvt = 1; int main() { char s = '_'; double input_height; cout << &q…
1. /* 整数上溢 */ #include <stdio.h> int main(void) { ; unsigned ; /* 无符号整数j像一个汽车里程指示表(形容的太好了,可参考<计算机科学导论>第3章 数据存储,有图), 当达到最大值时,它将溢出到起始点.整数i也是同样.它们的主要区别是unsigned int变量j的起始点是0(正像里程 指示表那样),而int变量i的起始点则是-2147483648.——参考<C Primer Plus> */ printf…
*****代码在Ubuntu g++ 5.31 / clang++ 3.8(C++11)下编写调试***** 每个C++程序必须有一个main( )函数,main( )函数的返回值也必须是int类型,操作系统通过调用main( )函数来运行C++程序. 1.函数格式 函数:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 完整函数的组成: ①返回类型:不一定有返回值,故不一定有返回类型 ②函数名:根据名字标识完成特定功能的模块,必须存在 //lambda匿名函数除外 ③形参列…
C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 默认构造函数,s1为空串 string s2(s1) 将s2初始化为s1的一个副本 string s3(“value”) 将s3初始化为一个字符串的副本 string s4(n, 'c') 将s4初始化为字符'c'的n个副本 getline读取整行文本 getline接受两个参数:一个是输入流对象和…
这是我对c++primer第二章的一个整理总结,算是比较适用于我自己吧,一小部分感觉不用提及的就省略了,只提了一下平时不注意,或者不好记住的内容. 排版太费劲了,直接放了图片格式.从自己的oneNote直接粘过来的. 这个排版还能再改改,等下午吧. 总结不易,转载注明出处,谢谢. http://www.cnblogs.com/linhaowei0389/…
本章总节 练习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释 编译型:把源代码编译成机器语言的可执行文件,程序执行的时候执行可执行文件即可. 优点:程序执行不需要源代码,不依赖语言环境,执行速度快,因为执行的是机器码文件,计算机可以直接读懂 缺点:每次修改源代码都需要重新编译.跨平台性不好,不同的操作系统,调用底层的机器指令不同,需为不同平台生产不同的机器码文件 编译型语言:如C.C++,Delphi 解释型: 用户调用解释器,执行源代码文件,解释器把源…
本笔记写于2020年1月27日. 本系列文章参考的是<C Primer Plus>(第六版),其中里面会有笔者自己的相关补充. 以下示例均运行于macOS Catalina 10.15.2上,编译器为clang 11.0.0 PS:如果笔记中有任何的错误,请在下方评论中留言,我会及时回复并修改,谢谢 简单的C示例 首先来看一个非常简单的C程序示例 #include <stdio.h> int main(void) { int num; num = 1; printf("I…
第三章主要介绍了C++中标准库类型.主要讲到string和vector类型.在string类型中,能够很方便的操作字符串,应该要注意的地方就是它的字符串中元素的位置的类型是:size_type类型的数据,其中主要涉及到如何访问每一个字符串的字符:(下标法)for(string::size_type ix=0:ix!=s.size():++ix){}.(迭代器法)for(string::iterator iter=s.begin();iter!=s.end();++iter){}. 在vector…
C++ Primer书上这个例子讲的很不错,写写帮助自己理解标准库和智能指针. .h 文件内容 #include <fstream> #include <iostream> #include <vector> #include <string> #include <map> #include <set> #include <sstream> #include <memory> class QueryResult…
unique_ptr 一个unique_ptr拥有它所管理的对象,与shared_ptr不同,unique_ptr指向的对象只能有一个用户.当unique_ptr被销毁后,它所指向的对象也被销毁. 定义一个unique_ptr时,需要将其绑定到一个new返回的指针上,类似shared_ptr,初始化unique_ptr必须采用直接初始化形式: unique_ptr<double> p1; // p1指向一个double类型变量 unique_ptr<int> p2(new int(…
面向对象程序设计的核心思想是:数据抽象.继承和动态绑定. 数据抽象:将类的接口与实现分离: 继承:定义相似类型并对相似关系建模: 动态绑定:一定程度上上忽略相似类型间的区别,用同一方式使用它们. 1.继承 通过继承联系在一起的类构成层次关系.层次关系的最底层或者说根部叫做基类,直接或者间接从基类继承而来得到的类叫做派生类. 基类负责定义该层次上共有的特性,派生类在基类的基础上根据自身需求进行扩展. 在面向对象程序设计的继承中,基类将需要进行扩展的函数与原封不动直接继承的函数进行区分对待.需要进行…
练习12.1:在此代码的结尾,b1 和 b2 各包含多少个元素? StrBlob b1; { StrBlob b2 = {"a", "an", "the"}; b1 = b2; b2.push_back("about"); } b2被销毁,b1包含4个元素. 练习12.2:编写你自己的StrBlob 类,包含const 版本的 front 和 back. const string& StrBlob::front() c…
练习9.1:对于下面的程序任务,vector.deque和list哪种容器最为适合?解释你的选择的理由.如果没有哪一种容器优于其他容器,也请解释理由.(a) 读取固定数量的单词,将它们按字典序插入到容器中.我们将在下一章中看到,关联容器更适合这个问题.(b) 读取未知数量的单词,总是将单词插入到末尾.删除操作在头部进行.(c) 从一个文件读取未知数量的整数.将这些数排序,然后将它们打印到标准输出.(a)应该使用array,因为单词的数量是固定的,也就是说元素的个数是固定的,因此符合array的特…
类的基本思想是数据抽象和封装,定义类就是定义一个抽象数据类型. 类中的所有成员必须在类中声明,也即默认定义在类中的成员全部为声明,除非显式的定义成员函数的函数体.成员函数是在类中声明的,定义可以在类内,也可以在类外,在类内定义时,为隐式内联,对于内联函数允许放在头文件,被多次定义. 在类的普通成员函数体内,成员函数是使用隐式的this指针来识别具体对象的.this指针是隐式定义的,在类内任何地方都不允许再次定义名为this的变量. 对于一个具体对象来说,它内部的this指针是const的,即是个…
练习1:写一个程序,打印从1到100的值 public class Print1To100{ public static void main(String args[]){ for(int i = 1 ; i <= 100 ; i++){ System.out.println("value:" + i) ; } } } 练习2:写一个程序,产生25个int类型的随机数.对于每个随机值,使用if-else语句来将其分类为大于.小于或等于紧随它而随机生成的值. public clas…
正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数名 3.形参 4.函数体 对于返回类型来说,return语句返回的类型必须和返回类型一致,或者可以转换. 对于函数名来说,允许多个函数使用相同的名字,当参数不同时,形成重载.对函数名使用调用运算符,则执行函数. 对于形参来说,可以是传值的,也可以是传引用的. 对于函数体来说,必须是在一对花括号包围的…
和大多数语言一样,C++提供了条件执行语句.重复执行相同代码的循环语句和由于中断当前控制流的跳转语句,表达式语句和声明语句等. 语句有简单语句和复合语句之分.简单语句但多数以分号结束,最简单的语句就是空语句,空语句中就只含有一个单独的分号. 复合语句是用花括号括起来的语句或声明,复合语句也叫块.复合语句不同于简单语句的是,复合语句具有作用域,即块作用域,块中引入的名字只能被当前块或者当前块的字块访问.复合语句是不用分号结尾的. 可以在if.switch.while.for语句的控制结构内定义变量…
*****代码在Debian g++ 5.40 / clang++ 3.8(C++11)下编写调试***** 本章主要是关于字符串.数组的内容,以及一些简单的容器知识. 1.using的声明 using关键字有2种用法: using std::cin; //这种叫做using声明,注意分号 using namespace std;     //这种叫做using指示,注意分号 两者的区别是一个using声明一次只引入一个std的成员,而using指示则将整个命名空间的所有成员都引入. 头文件不要…
*****代码在Debian g++ 5.3.1 / clang++ 3.8(C++11)下编写调试***** 由于部分编译器对标准遵循的不同以及自身额外的扩展,本章书中的少数知识点与实际实现存在偏差情况,在实际调试中存在差异时,以书本为准. 1.基本数据类型 计算机世界中的类型有很多,但是基本类型就那么几种,有基本数据类型,媒体类型,设备类型等,目前只学习数据类型.. 基本数据类型包括算术类型和空类型,算术又分为整数和浮点数(即小数).字符和布尔类型从属于整数,bool类型是C++内置类型,但…
文章17章 进.输出和文件 1.当到达输入句子.他将刷新输出缓冲区满输出电流 2.streambuf分类 它提供了用于各种操作的一个缓冲 ios_base类表示流的一般特征 ios基础的类ios_base.它包括一个点streambuf对象的指针 ostream类从ios派生.提供可输出方法 istream类从ios派生,提供可输入方法 iostream类基于ostream和istream,继承了输入和输出方法 3.包括iostream则自己主动创建了8个流对象 cin 标准输入 wcin 宽字…
本系列将总结正在阅读的C++primer这本书中值得注意又容易忘记的知识点. 1. 当return语句包括一个值时,次返回值的类型必须与函数返回类型相同. 2. 操纵符 endl.写入该符号的效果是: ①结束当前行(回车). ②将与设备关联的缓冲区中的内容刷到设备中. 3. 注释界定符(/**/)不能嵌套. 4. istream对象遇到文件结束符时候状态变为无效(0,false).windows的文件结束符为Crtl +z:linux的为Crtl+D. 5. 包含对于不属于标准库的头文件,用双引…
这章感觉好难啊,放个别人的总结. // 多维数组和指针 #include <stdio.h> int main(void) { int zippo[4][2] = {{2, 4}, {6, 8}, {1, 3}, {5, 7}}; /* zippo[0]是一个整数大小对象的地址,而zippo是两个整数大小对象的地址. 因为(一个)整数和两个整数组成的数组开始于同一个地址,因此zippo和zippo[0]具有相同的数值. 验证: 输出也显示出二维数组zippo的地址和一维数组zippo[0]的地…
1. bank.h #include <string> using namespace std; class BankAccount { private: std::string m_name;//若是不用命名空间的话,就需要加std:: string m_id; double m_money; public: BankAccount(); BankAccount(const string & name,const string & id,double money=0.0);…
1.编写通常接受一个参数(字符串的地址),并打印该字符串的函数.不过,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第二个参数的值,而等于函数被调用的次数).是的,这是一个非常可笑的函数,但它让读者能够使用本章介绍的一些技术.在一个简单的程序中使用该函数,以演示该函数是如何工作的. #include <iostream> using namespace std; );//默认b为0 void show(const…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/chudaxiakkk/article/details/30502807 第15章 友元.异常和其它 1.友元不仅有友元函数.还能是友元类 还能够将类中的某一个成员函数指定为还有一个类的友元 虽然友元被授予从外部訪问私有部门的权限.单并不与面向对象编程思想相愽,相反.它们提高了公有接口的灵活性 2.类的成员函数作为其它类的友元,涉及到类的声明顺序. 还有一个函数作为两个类的友元 这方面内容看P607…
当运算符作用域类类型的对象时,可以通过运算符重载来重新定义该运算符的含义.重载运算符的意义在于我们和用户能够更简洁的书写和更方便的使用代码. 基本概念 重载的运算符是具有特殊名字的函数:函数名由关键词operator和跟运算符号组成. 和普通函数相同,重载的运算符也包含返回值.形参列表和函数体.运算符函数的参数和该运算符的作用对象数量一样多.一元运算符只有一个参数,二元运算符有两个.对于二元运算符来说,第一个参数对应运算符左侧运算对象,第二个参数对应运算符右侧运算对象.运算符一律不允许含有默认实…