c++学习笔记
文章平均质量分 81
qq20004604
前阿里巴巴,高级前端开发
展开
-
(八十四)字符函数库cctype
cctype实际上就是一个函数库,他包括多个函数,在调用这些函数的时候,他会自动帮你判断,是否是该函数要求的类型,如果是,返回一个非0 int值(并非固定的)——但可以理解为true值(因为bool后是1),如果不是,返回一个0。例如:(括号内填变量名,或者用''包含在一起的字符)isalpha()是查证是否是字母,大写字母返回1,小写字母返回2。下列表格:函数名原创 2015-12-08 20:41:19 · 578 阅读 · 0 评论 -
(八十七)break和continue语句、以及goto语句
continue是效果是,在循环中,遇见continue,然后跳过剩余部分,从循环开始处继续循环。break语句的效果是,从break语句开始,跳过剩余循环语句,并结束循环。 如代码:#includeint main(){ using namespace std; int a=0; int i = 0, b = 0; cout << "****请问,10 % 4等于多原创 2015-12-12 21:12:05 · 1240 阅读 · 0 评论 -
(一〇一)第七章编程练习(附①至⑦章学习笔记下载链接)
1.编写一个程序,不断要求用户输入两个数,直到其中的一个为0。对于每两个数,程序将使用一个函数来计算它们的调和平均数,并将结果返回给main(),而后者将报告结果。调和平均数指的是倒数平均数的倒数,计算公式如下:调和平均数=2.0*x*y/(x+y)答:#includeusing namespace std;double tiaohe(double, double); //用于原创 2015-12-28 21:28:55 · 1412 阅读 · 2 评论 -
(八十九)txt文档的输入和输出
写入文本文件:要操作txt文档,首先要有头文件,有点类似。然后要创建一个ofstream的对象的对象名。具体格式为:ofstream 对象名对象名可以任意使用,例如abc,def等,之后通过他,来操纵相应的文件。当使用: 对象名.open("文件名"); 时,实际上就是将对象名指向了这个文件。然后以后可以通过使用对象名,来输入/输出这个文件了。假如open的文件不存在原创 2015-12-14 19:48:18 · 1438 阅读 · 0 评论 -
(八十八)对非char类型在cin时输入字符
代码:#includeconst int max = 5;int main(){ using namespace std; double fish[max]; cout << "Please enter the weights of your fish.\n"; cout .\n"; cout << "fish #1: "; int i = 0; while (i > fi原创 2015-12-14 19:46:52 · 599 阅读 · 0 评论 -
(九十)第六章复习题
1.请看下面两个计算空格和换行符数目的代码片段://Version 1while (cin.get(ch)) //quit on eof{if (ch == ' ') spaces++;if (ch == '\n') newlines++;} //Version 2while (cin.get(ch)) //quit on eof{i原创 2015-12-15 17:54:53 · 1008 阅读 · 1 评论 -
(九十一)第六章编程练习
(一)~(九十一)的word版已经上传,随后补链接。word版截止至《C++ Primer Plus第6版中文版》第六章结束。1.编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写字符,将小写字符转换大写(别忘了cctype函数系列)。 答:#include#includeint main(){ usi原创 2015-12-15 17:56:26 · 1239 阅读 · 0 评论 -
(九十二)函数
函数的分类:①有返回值的;②无返回值的。 无返回值函数:被称为void函数,其通用格式如下:void 函数名(传递的变量) //可以不传递变量{函数内部的代码;return; //可有可无}例如:void abc(int a){ using namespace std; //如果函数外面没有全局的std,那么可以加上,或原创 2015-12-16 17:05:38 · 565 阅读 · 0 评论 -
(九十三)函数与数组
当且仅当在函数头或者函数原型中:例如:int *a和int a[] 这两个的含义是相同的,指的是a是一个int指针。 但是在函数调用和函数内部,这两个的含义并不相同。 指针算数:在之前的指针算数中说过,指针实际上就是一个地址,是指针指向的那个地址;指针可以直接和一个int值相加,结果是指针指向的地址偏移。 在使用函数时,传递参数可以是一个地址,通过传递地址原创 2015-12-17 18:28:46 · 505 阅读 · 0 评论 -
(一一五)类
OOP(Object Oriented Programming,面向对象编程)最重要的特性:①抽象;②封装和数据隐藏;③多态;④继承;⑤代码的可重用性。注:以上不太懂,再ps:看完全部就懂了 过程性编程:一般先考虑遵循的步骤,然后考虑如何处理这些数据(可能需要把这些数据放存储在一个文件之中,写入和读取)。 面向对象编程:①考虑如何表示数据、原创 2016-01-19 00:25:04 · 417 阅读 · 0 评论 -
(一一六)类的构造函数和析构函数
类构造函数:构造函数 是专门用于构造新对象、将值赋给它们的数据成员。C++为这些成员提供了名称和使用语法,而程序员需要提供方法定义。名称与类名相同。例如:Stock类的一个可能的构造函数是名为Stock()的成员函数。构造函数的原型和函数头有一个有趣的特征——虽然没有返回值,但没有被声明为void类型。实际上,构造函数没有声明类型。 声明和定义构造函数:和使用普通原创 2016-01-19 00:39:28 · 578 阅读 · 0 评论 -
(一一七)this指针
所谓this指针,是一个指针,且这个指针用于类函数定义内部,指向当前对象(的地址)。 this指针的特点:①只能用于类定义内部; ②使用方法同结构指针,即使用运算符“->”; ③指向的是当前对象,即对象a使用这个类方法,其this指针指向的是对象a; ④this->私有成员 这个在大多数情况下,和只用私有成员效果是一样的,但是若参数名和私有成员名相同,那么这种原创 2016-01-19 00:49:23 · 482 阅读 · 0 评论 -
(一一八)对象数组
对象的数组,和声明一个普通的结构数组并没有什么区别。 在默认情况下,单纯的声明一个对象数组(未显式的调用构造函数时),那么将调用默认构造函数为对象数组的每个成员进行赋值(具体赋值情况需要根据默认构造函数而定)。 如代码:#include#includeclass man{private: std::string name; int a;public: man(原创 2016-01-19 00:50:42 · 360 阅读 · 0 评论 -
(一一九)类作用域
变量、函数具有不同的作用域,C++的也引入了一种新的作用域:类作用域。 在类中定义的名称(如类数据成员和类成员函数名)的作用域,都为整个类,作用域为整个类的名称,在该类之中是已知的,在类外是不可知的(如私有成员变量、公有成员变量和函数也算,因为需要使用作用域解析运算符才能调用)。 因此,可以在不同类中使用相同的类成员名而不会引起冲突(例如man类里有一个int a,而player类原创 2016-01-19 00:53:04 · 566 阅读 · 0 评论 -
(一二〇)抽象数据类型
抽象数据类型(abstract data type, ADT),是以通用的方式描述数据类型,而没有引入语言或实现细节。 程序员常常通过定义类,来表示更通用的概念,而对于抽象数据类型,使用类是一种非常好的方式。 当类概念使用ADT方法时,一般是这样做:①私有部分必须表示数据存储的方式。例如,可以使用常规数组、动态分配数组或更高级的数据结构(如链表); ②公有接口应隐藏数据原创 2016-01-19 00:55:28 · 703 阅读 · 0 评论 -
(一二一)第十章复习题
1.什么是类?答:类是用户自定义类型,有私有成员(不能被外界直接访问)和公有成员(需要用“类名.公有成员名”来访问)。类的链接性为内部(即只在当前文件可用),类不能在函数内部定义。补充:类声明指定了数据将如何存储,同时指定了用来访问和操纵这些数据的方法(类成员函数)。 2.类如何实现抽象、封装和数据隐藏?答:实现抽象靠的是类的定义,描述一个东西的各方面情况,用各种原创 2016-01-19 00:57:11 · 1014 阅读 · 1 评论 -
(一二一)第十章编程练习
1.为下面这个类提供方法和定义,并编写一个小程序用于演示所有特性。一个类来表示银行账户,数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作:①创建一个对象并将其初始化;②显示储户姓名、账号和存款;③存入参数指定的存款;④取出参数指定的款项。#includeclass Bankaccount{std::string name;char id[原创 2016-01-19 01:11:52 · 3718 阅读 · 0 评论 -
学习笔记(二)cout和cin
cout 和 cin的最大区别是:cout 后面跟的是而cin 表示的是输入,后面跟的是>>, 比如:int age;coutcin >> age; cout 代表先显示让你输入你的年龄,然后age 被你输入数字赋值,然后 显示出文字“你今年xx岁了”//11.14修改需要注意的就是符号的方向,>>和#include using namespace s原创 2015-12-01 15:29:04 · 1220 阅读 · 0 评论 -
学习笔记(一)省略std
书:《C++ Primer Plus 第6版 中文版》在开始的 #include 的之后的第二行,添加 using namespace std; 则在之后可以省略std:: 这种打字例如#include int main(void){ int age; std::cout << "心理调查试验:输入你的年龄" << std::endl; std::原创 2015-12-01 15:28:27 · 2176 阅读 · 0 评论 -
(三)数字判断大小语句
If (a>x) { 执行的函数,如coutx,知道了么””<<endl;}Else{执行的函数,如 cout可以多重嵌套例如If (a>5){函数1}Else{ if (a > 0{函数2}Else {函数3}}先判断 a>5,则执行函数1;如果不大于,则判断 a>0,执行函数2;如果还是否定,则执行函数3。原创 2015-12-01 15:45:34 · 1227 阅读 · 0 评论 -
(四)如何输出运算后的数字
假如我们要算a的平方,则couta*a例:#include using namespace std;int main(void){ int a; cout << "输入数字,这里可以帮你计算数字的平方" << endl; cout << "你想要计算的数字: "; cin >> a; cout << "计算结果: "; cout << a*a << endl;原创 2015-12-01 15:50:35 · 696 阅读 · 0 评论 -
(五)C++基本类型表
int 整数 4字节double 双精度浮点数 8字节float 单精度浮点数 4字节char 单个ascii字符(通俗点就是基本的英文键盘字符) 1字节wchar_t 宽字符(可以装下一个汉字) 2字节bool 布尔值(取值只能是true或者false) 1字节#include using namespace std;int main(void){ in原创 2015-12-01 16:10:16 · 699 阅读 · 0 评论 -
(六)unsigned的用法
还是以数学计算为例吧,算法公式是,输入数字*2=输出结果。#include using namespace std;int main(void){ unsigned int a; cout << "输入数字,这里可以帮你计算该数字绝对值的两倍" << endl; cout << "你想要计算的数字: "; cin >> a; cout << "计算结果: "; co原创 2015-12-01 16:12:12 · 1921 阅读 · 0 评论 -
(七)负数的补码
我们都知道二进制只有0和1,比如1在8位的二进制数字里的原码是0000 0001,而7的原码是0000 0111;-1的原码则为1000 0001,其中第一个红色数字1,表示负号,是符号位。如果是正数则为0,-7的原码是1000 0111;那么变成补码的话,正数的补码和原码相同,负数的补码为除了第一位符号位之外,其他位0变1,1变0,并且最后再加1;如:原创 2015-12-01 16:13:27 · 12411 阅读 · 4 评论 -
(八)while 的使用
while 的语法是while(条件满足的情况下){执行的函数}; 例如:#include using namespace std;int main(){ int i = 1; while (i<20){ cout << i << endl; i = i + 1; } system("pause"); return 0;}假如while原创 2015-12-01 16:15:02 · 869 阅读 · 0 评论 -
(十)while 和 do while的区别
while的语法是 while(条件判断){执行函数}do while的语法是 do{执行函数}while(条件判断)假如 用do while的时候int i = -1; do { cout = 0);显示结果是-1。用while的时候 int i = -1; while (i >= 0){ cout 是没有显示结果的。 即,do{} whil原创 2015-12-01 16:17:04 · 2460 阅读 · 1 评论 -
(十一)if... else...,以及!= ,== , =的区别
if...else的语法是这样的:if (判断语句){判断成立执行}else{判断不成立执行} 而else if 的使用则为if(判断语句1){命令1}else if(判断语句2){命令2}else{命令3}这个语句的判断是,如果判断1成立,执行命令;,如果不成立,判断2,成立执行命令2;如果判断1,2都不成立,则执行命令3。三个命令里只会执行原创 2015-12-01 16:19:13 · 624 阅读 · 0 评论 -
(十二)关于using namespace std
为了节省力气,于是我们在#include 的第二行,写上 using namespace std;,这行的目的,简单来看,是让你在之后的函数里,将std::cout, std::cin , std::endl 等,简写为cout , cin , endl 。之所以这么写,是因为,namespace的意思是,名称空间 ,具体貌似是在调用函数时,可能有多个版本同名字的函数,如果不加std,就不知道原创 2015-12-01 16:21:24 · 597 阅读 · 0 评论 -
(十四)关于#include<iostream>
include 的英文意思是 包含 ,而#include的意思是,让预处理器,将iostream这个文件的内容添加到 源代码 之中,iostream 这个文件,包含了c++的输入/输出方案涉及的多个定义,如果不添加,编译器就不知道你在源代码中打的一些命令是什么意思。其类同于在 源代码之中,加入了iostream 这个文件中的所有源代码(应该是源代码吧)原创 2015-12-02 20:32:55 · 4999 阅读 · 0 评论 -
(十五)换行
换行的办法有两个,其中一个是输入endl; 另外一个是在字符串之后输入\n。具体演示的话cout<<"这里演示换行"<<endl;cout<<"这里是第二行\n";cout显示的结果是:这里演示换行这里是第二行这里是第三行 即endl;和在字符串里面的\n的意义是一样的。具体如何使用,应该根据方便程度来选择。通常,输入字符串的时候,在之后打入原创 2015-12-02 20:33:32 · 392 阅读 · 0 评论 -
(十六)写代码时的风格
c++的源代码并没有强制要求,但为了方便,以及便于阅读,通常会遵守以下几个规则:①每条语句占一行,例如:cout ②每个函数都有一个开始花括号和结束花括号({}),他们通常都各占一行,例如:int main(){函数} ③函数中的语句,都相对于花括号进行缩进。例如:int main(){cout<<"要相对于花括号进行缩进\n"}原创 2015-12-02 20:35:36 · 469 阅读 · 0 评论 -
(十七)关于声明
在我们需要使用一个变量的时候,我们会这么做:int a;这段话,便是一个声明,声明a是一个整数变量。如果没有声明,那么就在之后说 cout之所以这样,是因为不声明便直接使用,很容易导致因为拼写错误,导致创造出一个新的变量,而你很难发现问题到底出现在哪。例如cammon;camnon =cammon + 1;如果你不认真仔细看的话,可原创 2015-12-02 20:36:21 · 422 阅读 · 0 评论 -
(十八)赋值“=”
= 为赋值,具体的方式为,= 右边的赋值给左边的,即:被赋值a = 赋值b。并且,可以连续使用赋值的=。如 a=b=c=1,即c被赋值为1,然后b被赋值c(此时c为1),a又被赋值为b,即也为1,那么,a=b=c=1。(这里是=是等于是意思,不是赋值的意思)然而,赋值的左边不能为算术式,如:a=1;b-1=a;这种是不成立的。只有原创 2015-12-02 20:37:38 · 443 阅读 · 0 评论 -
(十三)break 命令
在while(ii=1;while(i<10){ cout<<"我真帅"<<endl;}while(i<10){i=i+1;cout<<"再念一遍,我真帅"<<endl;}while(i>=10){ cout<<"谢谢"<<endl;} 输出的结果是无限循环输出“我真帅”,而不会跳到下一行输出“再念一遍,我真帅”,更不会输出“谢谢”。因此,应该在第一个while里面加入一个结束原创 2015-12-02 20:27:57 · 539 阅读 · 0 评论 -
(三十八)浮点类型
浮点类型分为三种,分别为:float、double和long double。这些类型是按照他们可以表示的有效数位和允许的指数最小范围来描述的。有效数位指:数字中有意义的位(这种说法很别扭,但结合实例就很容易理解),具体而言,12345有5个有效位,12300的却只有2个有效位,12045有5个有效位,12040有4个有效位。总的而言呢,数字中从第一个非0数字开始算起,到最后一个非0数字原创 2015-12-03 16:15:48 · 1492 阅读 · 0 评论 -
(四十六)字符串
字符串是存储在内存的连续字节中的一系列字符。并且,因为是内存中的连续字节中的一系列字符。意味着可以将字符串存储在char数组中(因为字符是被存储为char类型的,又因为是连续的,可以认为是若干char类型 所组成的数组)。每个字符都位于自己的数组的元素中——即每一个字符对应char数组中的一个值。字符串提供了一种存储文本信息的便捷方式,如提供给用户的消息(“比如说你看到的这一句话”)或原创 2015-12-03 16:33:56 · 418 阅读 · 0 评论 -
(六十)类型组合
之前学到了指针,数组,指针数组,结构等。他们之间可以互相结合使用,原则同正常使用。上代码:#includestruct aa //定义结构{ int a;};struct aaa //定义结构aaa{ int b; int c;};int main(){ using namespace std; aa s1, s2, s3, s4, s5; //使用定义aa原创 2015-12-03 17:37:24 · 430 阅读 · 0 评论 -
(二十一)某些定义(也是考题):
①C++的程序模块叫做: 函数(√) ②下面的预处理器编译指令是做什么用的?#include 调用iostream这个库。(标准答案为:它将导致在最终编译前,使用iostream文件内的内容替换该编译指令。 ③下面的语句是做什么用的?using namespace std;;使用名称空间std ,可以省略 std::cin std::cout 等之前的std::。原创 2015-12-02 21:36:03 · 368 阅读 · 0 评论 -
(二十三)变量名的命名
一般来说,为了方便使用和鉴别,应尽量使用具有一定含义的变量名。具体建议规则如下:①组成变量名的有字母,数字,和下划线(_),但是,数字和下划线不要作为开头。②变量名尽量和其表示的变量有关,要么是中文拼音,要么是英文,尽量是英文。比如差旅费的变量是cost_of_trip,比如年龄的变量尽量为age。如果有多个,比如可以为age1,age2等。(如果你弄的不一样,读代码和写代码的时候,很容易原创 2015-12-02 21:37:55 · 604 阅读 · 0 评论 -
(二十六)符号类型
比如有一个short a; 我们有时候会给前面加上一个unsigned ,就变成了unsigned short a;这个时候呢,因为short是16位,16位能表示出65536种数字。如果是short a;他的范围就是-32768 ~ +32767。加上signed也是一样的,如果加上unsigned呢,他的范围就变成了0 ~ 65535 了。ps:unsigned 本身是 unsigne原创 2015-12-02 21:41:27 · 573 阅读 · 0 评论