logo资料库

C++重点知识点清单.pdf

第1页 / 共138页
第2页 / 共138页
第3页 / 共138页
第4页 / 共138页
第5页 / 共138页
第6页 / 共138页
第7页 / 共138页
第8页 / 共138页
资料共138页,剩余部分请下载后查看
第一章 C 语言的发展及特点 C++的特点: 1.支持抽象数据类型 2.多态性,一个接口,多重算法,支持早期联编和滞后联编 3.继承性,保证了代码复用,支持分类的概念 一个 c++程序由一个或多个函数构成,并且在这些函数中只有一个主函数 main,它是程序执行的入口。 C++程序严格区别字母的大小写。 第 2 章 基本数据类型、运算符与表达式 【内容提要】 数据类型 变量与常量 运算符与表达式 简单输入与输出 【重点与难点】 2.1 数据类型 在 C++程序里,每个名字都有一个与之相关联的类型,这个类型决定了可以对这个名字 所指代的实体应用什么操作,并决定这些操作将如何做出解释。 数据类型 基本数据类型 复合数据类型 布尔型 bool 整型 int 字符型 char 浮点型 空类型 void 单精度型 float 双精度型 double 指针类型 Type* 数组类型 Type[] 枚举类型 enum 联合类型 union 结构类型 struct 类类型 class 图 2.1 C++的数据类型 图中 Type 表示非控数据类型。 2.1.1 基本数据类型 逻辑型:又称布尔型,用关键字 bool 表示。有两个值 true 或 false。true 可以转换成
整数 1,false 可以转换成整数 0。与此对应,整数也可以隐式的转换成 bool 值:非 0 的整数转换成 true,0 转换成 false。 字符型:用关键字 char 表示。取值包含具体实现所用的字符集里的一个字符。字符型数 据通常占用 1 个字节的存储空间。 整型:用关键字 int 表示。取值是计算机所能表示的所有整数。 浮点型:包括单精度型(float)和双精度型(double)。单精度型通常占用 4 个字节的存储 空间,双精度型通常占用 8 个字节的空间。 空类型:用关键字 void 表示。用于说明某个函数没有返回值。没有 void 类型的对象。 在基本的数据类型前可以添加修饰符,以改变基本类型的意义。 signed:有符号。 unsigned:无符号。 unsigned 和 signed 只用于修饰 char 和 int,且 signed 修饰词可以省略。当用 unsigned 修饰词时,后面的类型说明符可以省略。对于有符号和无符号的整型数据,它们所占的存储 空间的大小相同,但它们的表数范围却不相同(对字符型意义相同)。 short:短型。只用于修饰 int,且用 short 修饰时,int 可以省略。 long:长型。只用于修饰 int 和 double。当用 long 修饰 int 时,int 可以省略。 数据类型的描述确定了其内存所占空间的大小,也确定了其表示范围。用 sizeof(数据 类型)可以确定某数据类型的字节长度。请读者查看在你所用的机器上,下面类型的最大值 和最小值是什么:char、short、int、long、float、double、long double 、unsigned。 2.1.2 复合数据类型 数组:由具有相同数据类型的元素组成的集合。 结构体:由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型 一般不同,并且在内存中分别占据不同的存储单元。 共用体:是类似于结构体的一种构造类型,与结构体不同的是构成共同体的数据成员共 用同一段内存单元。 枚举:将变量的值一一列举出来,每个枚举成员(枚举符)都与一个整数相对应。按默 认方式,枚举符所赋的值从 0 开始递增。枚举的值也可以用整型的表达式赋值进行初始 化。如果某个枚举中所有枚举符的值均非负,该枚举的表示范围是[0: 2K -1],其中 2K 是能使所有枚举符位于此范围内的最小的 2 的幂;如果存在负的枚举符值,该枚举的取 值范围就是[-2K:2K -1]。 指针类型:指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。 它在内存中占据一个存储单元。 类类型:类是体现面向对象程序设计的最基本特征,也是体现 C++与 C 最大的不同之处。 类是一个数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型 的所有对象的性质。 2.2 变量与常量 2.1.1 变量:指在运行期间其值可以改变的量。 变量有三个特征:变量类型、变量名、变量值。 命名:遵循标识符命名规则。 标识符是对实体定义的一种定义符,用来标识用户定义的常量名、变量名、函数名、文 件名、数组名、和数据类型名和程序名等。只能由字母、数字和下划线组成,且以字母或下 划线开头。命名时注意以下几点: 1. C++的关键字不能用作用户自定义的实体名; 2. 以下划线开头的名字是保留给实现或者运行环境,用于特殊目的,在应用程序里不 要采用这样的名字; 3. 大写与小写字母是区分的; 4. 见名知义。
5. 维持统一的命名风格。 定义: 格式: <类型名><变量名>[[=<表达式>],…] typedef:为某种类型声明一个新名字,而不是定义一种新类型。 格式:typedef <已有类型名> <新类型名> 2.1.2 常量:程序执行期间其值不变的量。主要有下列几类常量。 布尔常量 字符常量 用单引号括起的一个字符。在内存中,字符数据以 ASCII 码存储,如字符‘a’的 ASCII 码为 97。以转义字符‘\’开始的字符常量后跟不同的字符表示不同的特殊字符。 字符串常量 由一对双引号括起来的零个或多个字符序列。 字符串可以写在多行上,不过在这种情况下必须用反斜线‘\’表示下一行字符是这一 行字符的延续。 字符串常量实际上是一个字符数组,组成数组的字符除显示给出的外,还包括字符结尾 处标识字符串结束的符号‘\0’,所以字符串“abc”实际上包含 4 个字符:‘a’、‘b’、‘c’ 和‘\0’。 注意字符常量与字符串常量在表示、存储、运算方面的区别。 整型常量 可以用十进制、八进制或十六进制表示。 十进制常量 :一般占一个机器字长,是一个带正负号的常数(默认情况下为正数)。 八进制常量 :由数字 0 开头,其后由若干 0-7 的数字组成,如 0378,0123 等。 十六进制常量:以 0x 或 0X 开头,其后由若干 0-9 的数字及 A-F(或小写 a-f)的字母 组成,如 0x123,0x3ab。 浮点型常量 只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。 如:11.3、.2、2.3e10、-2.3E-1 等。 枚举常量 枚举声明形式: enum <枚举名>{<枚举符表>}; 枚举符可以有两种形式: <枚举符名>/<枚举符名>=<整形常量> 符号常量 定义形式:const <类型名> <符号常量名>=<表达式>[,…]; []表示可选项,以下都采用这种标记。 定义的符号常量必须初始化。一个符号常量可看作是一个只读变量,由 const 定义的常 量的值不可以改变。const 的最常见的用途是作为数组的界和作为分情况标号。 2.3 运算符与表达式 在程序中,表达式是计算求值的基本单位,它是由运算符和运算数组成的式子。运算符 是表示进行某种运算的符号。运算数包含常量、变量和函数等。C++语言的运算符按其在表 达式中与运算对象的关系(连接运算对象的个数)可分为:单目运算、双目运算、三目运算。 C++运算符一览表 名称 运算符 举例 优先级 结合性 作用域区分符 分量运算符 函数调用运算符 下标运算符 :: . -> () [] 后增量、后减量 ++ -- ::x p.next,p->next fac() p[10] p++ 1 2 2 左结合性 右结合性
前增量、前减量 求字节运算符 正号、负号 指针运算符 ++ -- sizeof + - * 和 & 分配、回收空间运算符 New delete --p sizeof(int) -1,+3 *p,&x p=new int; delete p; 强制类型转换运算符 (type) (int)x 3 3 算术运算符 左移、右移 关系运算符 位运算符 逻辑运算符 条件运算符 赋值运算符 * / % + - << >> <<= > >= == != 3%5(取模) 8>>3, 8<<3 3<5 3!=5 &(按位“与”) ^(按位“异或”) |(按位“或”) 1&2 1^2 1|2 && || ! ? : x&&y x||y !x a>b?x:y = 及其扩展(+= -= *= /= %= 等) a=2 a+=2 逗号运算符 , a=1,b=2,c=3 表 2.1 C++运算符一览表 4 5 6 7 8 9 10 11 12 13 3 14 15 16 左结合性 右结合性 左结合性 2.4 简单输入与输出 在 C++中,I/O 使用了流的概念-字符(或字节)流。每一个 I/O 设备传送和接收一系列 的字节,称之为流。输入操作可以看成是字节从一个设备流入内存,而输出操作可以看成是 字节从内存流出到一个设备。要使用 C++标准的 I/O 流库的功能,需要包括两个头文件: iostream.h 用于提供基本的输入输出功能,iomanip.h 用于提供格式化的功能。 2.4.1 I/O 的书写格式(基本数据类型的输入输出) 头文件 iostream.h 包含有 cin 和 cout 对象,对应于标准输入流和标准输出流。流读取运 算符“>>”表示流的输入,可以从 cin 输入流中读取字符;流插入运算符“<<”表示流的输 出,可以向 cout 输出流插入字符。 如:cout<<”hello world.”<>i>>j; //输入 i,j 的值 2.4.2 使用控制符(基本数据类型输入输出的格式控制) C++中提供了大量的用于执行格式化输入输出的格式控制符,具体名称及作用请参看表 2.2。 控制符 描述 所 在 头 文 件 dec hex oct setfill(c) setprecision(n) 置基数为 10 置基数为 16 置基数为 8 设填充字符为 c 设显示小数精度为 n 位 iostream.h
setw(n) setiosflags(ios::fixed) setiosflags(ios::scientific) 指数表示 setiosflags(ios::left) setiosflags(ios::right) 设域宽为 n 个字符 固定的浮点显示 左对齐 右对齐 忽略前导空白 iomanip.h setiosflags(ios::skipws) setiosflags(ios::uppercase) 16 进制数大写输出 setiosflags(ios::lowercase) 16 进制数小写输出 setiosflags(ios::showpoin) 显示小数点 setiosflags(ios::showpos) 显示符号(正负号) setiosflags(ios::showbase) 指定在数值前输出进制(0 表示八进制,0x 或 0X 表示十六进制) 表 2.2 I/O 流的常用控制符 【典型例题】 例题 1:对以下各种数据类型比较所占用存储空间的大小: (1)char、int、short int、long int、double、long double. (2) signed int、unsigned int. 解答: (1) 本题主要考查的知识点是各种类型所占用的存储空间的大小以及相应的表数范围。在 32 位计算机中,char 占 1 个字节,short int 占 2 个字节,int 占 4 个字节,long int 占 4 个字节,double 占 8 个字节。sizeof 运算符用于求解某种数据类型的大小。short 和 long 在修饰整型时可以省略 int。答案为: (2)对于一种确定的数据类型有符号数与无符号数所占的存储空间相同,表数范围不同。修 饰符 signed 和 unsigned 只能用于修饰字符型和整型。答案为: 例题 2:下列哪一项能用作用户自定义的标识符: (a)const (b)2var (c)my name (d)var2 解答: 本题主要考查标识符命名规则。C++关键字不能用于用户自定义标识符,(a)中 const 是关键 字;第一个字符必须是字母或下划线,(b)中 2var 是以数字开头;不能含有空格,(c)中 my name 含有空格。答案为:d。 例题 3:指出下列程序中的错误:__________。 x=100; return 0; 解答: 本题主要考查对符号常量的理解。const 定义的符号常量必须初始化,由 const 定义的常量 的值不可以改变。所以本题有两处错误:第一、没有对符号常量 x 进行初始化;第二、给符 号常量赋值是错误的。 int main() { const int x; }
(1) a+b-c--%b (2) a>b?b:c>d?a:cb?b:(c>d?a:(cb?(a>c?a:c):(b>c?b:c)。 (2) 主要考查对逻辑表达式的理解和书写。答案为:1<=age&&age<=100。 (3) 主要考查如何在计算机中表示一个数学公式。答案为:(a+b)*h/2。 (4) 主 要 考 查 对 逻 辑 表 达 式 的 理 解 和 书 写 。 答 案 为 : (year%4==0&&year%100!=0)||(year%400==0)。 (a)3/2 和 3.0/2.0 (b)3/2 和 3.0/2 (c) 3/2.0 和 3.0/2.0 (d) 3/2.0 和 3/2 例题 6:下列选项中两个表达式的运算结果相同的是( )。 解答: 本题考查数据类型及表达式中数据类型的隐式转换。3/2 中两个操作数都为整型,运算结果 仍为整型即 1;3.0/2 和 3/2.0 中一个操作数为整型另一个为浮点型,运算时整型隐式转换 为浮点型,运算结果也为浮点型即 1.5;3.0/2.0 两个操作数均为浮点型,结果也为浮点型 即 1.5。答案为:(c)。 例题 7: 下列程序的运行结果为:______________。 #include void main() { x=a>b&&++i; } 解答: 本题主要考查“短路”表达式的运算。对于表达式中的“与”运算而言,只要有一个操作数 cout<<"x:"<
为假,结果为假。所以当第一个操作数为假时,不在求解其它操作数。对于表达式中的“或” 运算而言,只要有一个操作数为真,则结果为真。所以当第一个操作数为真时,不在求解其 它操作数。本题中 a>b 为假,所以表达式 a>b&&++i 为假,而++i 没有执行。故 i 为 0。答案 为:x:0 i:0 例题 8:求解下列各表达式的值(其中 x 的值为 100)。 (1) (a=1,b=2,c=3) (2) 1|3<<5 (3) 'a'+3&&!0%1 (4) x%2?“odd”:” even” 解答: (1) 逗号表达式的值是其最后一个表达式的值。答案为:3。 (2) <<运算符的优先级高于|运算符,所以先算 3<<5 结果为 96(二进制 1100000),然后与 1 做按位与运算则结果为 97(二进制 1100001)。答案为:97。 (3) 参与本题的运算符,按优先级由高到低依次是:!运算符、算术运算符、逻辑运算符。 'a'+3 时字符型首先隐式转换成整型然后相加结果为 100,!0%1 即 1%1 结果为 0,100&&0 结果为 0。答案为:0。 (4) 算术表达式的优先级高于条件表达式,所以先算 x%2 结果为 0,0?”odd”:”even”结 果为”even”。本题完成判断一个数是奇数还是偶数,若该数为奇数,则表达式的值为” odd”,为偶数,则表达式的值为”even”。答案为:”odd”。 例题 9:下列程序运行结果为:_______________。 #include #include void main() { int a=23; double b=23.123456789; cout<
数字。所以第六行输出结果为:23.12346。 ⑤ setiosflags(ios::showbase)为指定在数值前输出进制。hex 置基数为 16,且该操作保 持效力,所以使用完后应该恢复为默认值 10 进制。第九行输出结果为:0x17 0x17。 ⑥setw(n) 设域宽为 n 个字符,setfill(c) 设填充字符为 c ,setiosflags(ios::left)为 左对齐。第十一行输出结果为:23********。 答案为: 23 23.1235 2e+001 23.1234568 23.12346 0x17 0x17 23******** 【习题】 一、 选择题 1. 下列数据类型不是 C++语言基本数据类型的是( )。 (a)字符型 (b)整型 (c)浮点型 (d)数组 2. 下列字符列中,可作为 C++语言程序自定义标识符是( )。 (a)x (b)-var (c)new (d)3i 3. 下列数中哪一个是 8 进制数( )。 (a)0x1g (b)010 (c)080 (d)01b 4. 已知 a=1,b=2,c=3,则表达是++a||-b&&++c 的值为( )。 (a)0 (b)1 (c)2 (d)3 5. 下列表达式选项中,( )是正确的。 (a)++(a++) (b)a++b (c)a+++b (d)a++++b 6. 已知枚举类型定义语句为:( )。 enum color{RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15}; 则下列叙述中错误的是( )。 (a)枚举常量 RED 的值为 1 (b)枚举常量 BLUE 的值为 1 (c)枚举常量 YELLOW 的值为 7 (d)枚举常量 PURPLE 的值为 15 7. 下列程序的运行结果正确的是( )。 #include #include void main() { } (a) 3.142 3.142 **3.14159260 const double pi=3.1415926; cout<
分享到:
收藏