第2章基本C++语言 21C++程序结构 22数据类型和基本输入输出 23运算符和表达式 24基本语包 作业1 25函数和预处理 26构造类型 27指针和引用 作业2
第2章基本C++语言 2.1 C++程序结构 2.2 数据类型和基本输入输出 2.3 运算符和表达式 2.4 基本语句 作业1 2.5 函数和预处理 2.6 构造类型 2.7 指针和引用 作业2
2.1c++程序结构 21.1几个C++程序 [例Ex_ Simple2]在屏幕上输出一个由星号形成的三角形 //输出星号的三角形阵列 #include void DoDraw (int num //声明一个全局函数 void maino int num=5 //定义并初始化变量 DoDraw(num) //函数的调用 void DoDraw (int num //函数的定义 for (int i=0; i<num; i++) //循环语句 for (int j=0; j<=i; j++) cout<<求; cout<<\n’;
2.1C++程序结构 2.1.1几个C++程序 [例Ex_Simple2] 在屏幕上输出一个由星号形成的三角形。 // 输出星号的三角形阵列 #include void DoDraw(int num); // 声明一个全局函数 void main() { int num=5; // 定义并初始化变量 DoDraw(num); // 函数的调用 } void DoDraw(int num) // 函数的定义 { for (int i=0; i<num; i++) // 循环语句 { for (int j=0; j<=i; j++) cout<<'*'; cout<<'\n'; } }
2.1c++程序结构 [例 Ex Simple3]用类的概念重写例 Ex Draw //输出星号的三角形阵列 #include iostream. h> class cdrawarray /定义一个类 t public void DoDraw (int num) //声明类的公有成员函数 void CDrawArray:: DoDraw (int num //成员函数的实现 for (int i=0; i<num; i++) t for(int j=0; j<=i; j++) cout<< k cout<n’; void main o int num=5 CDrawArray my Draw //定义类的一个对象 my Draw. DoDraw(num) //调用此对象的成员函数
2.1C++程序结构 [例Ex_Simple3] 用类的概念重写例Ex_Draw。 // 输出星号的三角形阵列 #include class CDrawArray // 定义一个类 { public: void DoDraw(int num); // 声明类的公有成员函数 }; void CDrawArray::DoDraw(int num) // 成员函数的实现 { for (int i=0;i<num;i++) { for (int j=0;j<=i;j++) cout<<'*'; cout<<'\n'; } } void main() { int num=5; CDrawArray myDraw; // 定义类的一个对象 myDraw.DoDraw(num); // 调用此对象的成员函数 }
2.1c++程序结构 21.2C++程序的基本组成 C++程序往往由预处理命令、语句、函数、变量和对象、输入与输出以及注 释等几个基本部分组成的。 (1)预处理命令 在程序的一开始出现含有以“#开头的命令,它们是预处理命令。三类预处 理命令:宏定义命令、文件包含命令和条件编译命令 (2)语句 可以是用来判断的条件语句,可以是用来反复运行的循环语句等 (3)函数 个程序由若干个函数组成。有的是系统中所提供的库函数,有的是根据自 己需要自己编制设计的函数。程序中必须有一个且只能有一个主函数main (4)变量和对象 变量的类型有整型(int)、字符型(char)以及浮点型( float)等。对象通常是 指“类”的实例(具有该“类”类型的变量),如 my Draw是类 CDrawArray的对 象 (5)输入与输出 使用输入与输出可以要求键入一些数值或把计算的结果显示在屏幕上。 (6)注释 序的目的不仅在于实现某种功能、解决某个问题,而且还在于数据结构和 法的交流。注释能提高程序的可读性,帮助用戶对程序的理解
2.1C++程序结构 2.1.2C++程序的基本组成 C++程序往往由预处理命令、语句、函数、变量和对象、输入与输出以及注 释等几个基本部分组成的。 (1) 预处理命令 在程序的一开始出现含有以“#”开头的命令,它们是预处理命令。三类预处 理命令:宏定义命令、文件包含命令和条件编译命令。 (2) 语句 可以是用来判断的条件语句,可以是用来反复运行的循环语句等。 (3) 函数 一个程序由若干个函数组成。有的是系统中所提供的库函数,有的是根据自 己需要自己编制设计的函数。程序中必须有一个且只能有一个主函数main。 (4) 变量和对象 变量的类型有整型(int)、字符型(char)以及浮点型(float)等。对象通常是 指“类”的实例(具有该“类”类型的变量),如myDraw是类CDrawArray的对 象。 (5) 输入与输出 使用输入与输出可以要求键入一些数值或把计算的结果显示在屏幕上。 (6) 注释 程序的目的不仅在于实现某种功能、解决某个问题,而且还在于数据结构和 算法的交流。注释能提高程序的可读性,帮助用户对程序的理解
2.1c++程序结构 213C++程序的书写风格 标识符命名 用来标识变量名、函数名、数组名、类名、对象名、类型名、文件名等的有 效字符序列。标识符命名的好坏也会影响程序的可读性,命名时注意: (1)合法性 标识符由大小写字母、数字字符09)和下划线组成,第一个字符必须为字 母或下划线。任何标识符中都不能有空格、标点符号及其他字符。注意,标 识符的大小写是有区别的。用户定义的标识符不能和系统的关键字同名。 (2)有效性 标识符的长度(组成标识符的字符个数)是任意的,最好不超过32个,因为有 的编译系统只能识别前32个字符,也就是说前32个字符相同的两个不同标识 符被有的系统认为是同一个标识符 (3)易读性 在定义标识符时,若能做到“见名知意”就可以达到易读性的目的
2.1C++程序结构 2.1.3C++程序的书写风格 ➢ 标识符命名 用来标识变量名、函数名、数组名、类名、对象名、类型名、文件名等的有 效字符序列。标识符命名的好坏也会影响程序的可读性,命名时注意: (1) 合法性 标识符由大小写字母、数字字符(0~9)和下划线组成,第一个字符必须为字 母或下划线。任何标识符中都不能有空格、标点符号及其他字符。注意,标 识符的大小写是有区别的。用户定义的标识符不能和系统的关键字同名。 (2) 有效性 标识符的长度(组成标识符的字符个数)是任意的,最好不超过32个,因为有 的编译系统只能识别前32个字符,也就是说前32个字符相同的两个不同标识 符被有的系统认为是同一个标识符。 (3) 易读性 在定义标识符时,若能做到“见名知意”就可以达到易读性的目的
2.1c++程序结构 缩进和注释 缩进是指程序在书写时不要将程序的每一行都由第一列开始,在适当的地方 加进一些空行或空格。它同注释一样,也是为了提高程序的可读性。 注释要注意的是: (1)注释应在编程的过程中同时进行,不要指望程序开发完成后再补写注释 那样只会多花好几倍的时间,更为严重的是,时间长了以后甚至会读不懂自 已写的程序。 (2)必要的注释内容应包含:源程序的总体注释(文件名、作用、创建时间、版 本、作者及引用的手册、运行环境等)、函数注释(目的、算法、使用的参数 和返回值的含义、对环境的一些假设等)及其他的少量注释。千万不要陈述 那些一目了然的内容,否则会使注释的效果适得其反
2.1C++程序结构 ➢ 缩进和注释 缩进是指程序在书写时不要将程序的每一行都由第一列开始,在适当的地方 加进一些空行或空格。它同注释一样,也是为了提高程序的可读性。 注释要注意的是: (1) 注释应在编程的过程中同时进行,不要指望程序开发完成后再补写注释。 那样只会多花好几倍的时间,更为严重的是,时间长了以后甚至会读不懂自 己写的程序。 (2)必要的注释内容应包含:源程序的总体注释(文件名、作用、创建时间、版 本、作者及引用的手册、运行环境等)、函数注释(目的、算法、使用的参数 和返回值的含义、对环境的一些假设等)及其他的少量注释。千万不要陈述 那些一目了然的内容,否则会使注释的效果适得其反
22数据类型和基本输入输出 2.2.1基本数据类型 使用基本数据类型时需要注意 (1)无符号和有符号的区别在于数值最高位的含义。对 signed类型,最高位是符 号位,其余各位表示数值大小; unsigned类型的各个位都用来表示数值大小; 相同基本数据类型的 signed和 unsigned的数值范围是不同 ②2)char、 short、int和long可统称为整型。缺省时,char、 short、int和 long本身是有符号( signed)的。 表24C的基本类型 类型名 类型述 字范围 宰符形 -128127 ansi gned cha无符号字符型 102550zff) si gned char有符号字符型(与char相同)1 12812 hort lint 短整型 327683276 unsigned short无符号短整型 0^655350 xffff) si d 2224444444 hort有符号短整型(与 short int2 32768~32767 int 整型 21474836482147483647 ansi gned[int]无符号整型 042949672950 xffffffff signed[int]有符号整型〔与int相同) 21474836482147483647 long [int] 长整型 21474836482147483647 unsigne 无符号长整型 04294967295(Oxffffffff) si gned 有符号长整型(与1 ong int相 21474836482147483647 float 单精度浮点型 7位有效位 double 双精度浮点型 815位有效位 long double 长双精度浮点型 1019位有效位
2.2数据类型和基本输入输出 2.2.1基本数据类型 使用基本数据类型时需要注意: (1)无符号和有符号的区别在于数值最高位的含义。对signed类型,最高位是符 号位,其余各位表示数值大小;unsigned类型的各个位都用来表示数值大小; 相同基本数据类型的signed和unsigned的数值范围是不同。 (2) char、short、int和long可统称为整型。缺省时,char、short、int和 long本身是有符号(signed)的
22数据类型和基本输入输出 2.2.2常量 整型常量 (1)十进制整型常量:即十进制整数,如34、128等 (2)八进制整型常量:以0开头的数,由0至7的数字组成 (3)十六进制整型常量:以0x或0X开头的数,由0至9、A至F或a至f组成。 需要注意的是: 整型常量中的长整型(long)要以L或小写字母1作为结尾 整型常量中的无符号型( unsigned)要以或u作为结尾。 浮点型常量 (1)十进制数形式:由整数部分和小数部分组成。 (2)指数形式:采用科学表示法,能表示出很大或很小的浮点数。 若浮点型常量是以F(或f结尾的,则表示单精度类型(foat),以L(或小写字 母)结尾的,表示长双精度类型( ong double)。若一个浮点型常量没有任何 说明,表示双精度类型( double)
2.2数据类型和基本输入输出 2.2.2常量 ➢ 整型常量 (1) 十进制整型常量:即十进制整数,如34、128等。 (2) 八进制整型常量:以0开头的数,由0至7的数字组成。 (3) 十六进制整型常量:以0x或0X开头的数,由0至9、A至F或a至f组成。 需要注意的是: ▪ 整型常量中的长整型(long)要以L或小写字母l作为结尾。 ▪ 整型常量中的无符号型(unsigned)要以U或u作为结尾。 ➢ 浮点型常量 (1) 十进制数形式:由整数部分和小数部分组成。 (2) 指数形式:采用科学表示法,能表示出很大或很小的浮点数。 若浮点型常量是以F(或f)结尾的,则表示单精度类型(float),以L(或小写字 母l)结尾的,表示长双精度类型(long double)。若一个浮点型常量没有任何 说明,表示双精度类型(double)
22数据类型和基本输入输出 字符常量 字符常量是用单引号括起来的一个字符。 表25C+中常用转义序列符 辛式含叟 响铃 Ab 退格(相当于按 Backspace健) AE 进纸(仅对打印机有效 换行 回车(相当于按 Enter键 水平制表(相当于按Tab键 垂直制表(仅对打印机有效〕 单引号 双引号 t 反斜杠 问号 1到3位八进制数所代表的字符 Whh 1到2位十六进制数所代表的字符
2.2数据类型和基本输入输出 ➢ 字符常量 字符常量是用单引号括起来的一个字符
22数据类型和基本输入输出 [例Ex_ DrawBox]用转义序列符绘制矩形框。 #include iostream. h> void DrawBox(int nWidth, int nHeight) void main DrawBox(20, 6): void DrawBox(int nWidth, int nHeight int 1 //绘制矩形框的顶边 cout<<\311 //r字符的扩展 ASCII是311 for(i=1;i< nWidth;i++)cout<\315;//一字符的扩展 ASCLL是315 cout<<"273n"; //字符的扩展 ASCII是273 /绘制矩形框的两边 for {cout<<\272 //|字符的扩展 ASCII是272 for (int j= Width; j++) cout<<"272\n" cout<<\310 //L字符的扩展 ASCI是310 for (i=1: i<nWidth: i++) cout<<\315 cout<<"\274\n"; //字符的扩展 ASCII是274
2.2数据类型和基本输入输出 [例Ex_DrawBox] 用转义序列符绘制矩形框。 #include void DrawBox(int nWidth, int nHeight); void main() { DrawBox(20, 6); } void DrawBox(int nWidth, int nHeight) { int i; // 绘制矩形框的顶边 cout<<'\311'; //┌字符的扩展ASCII是311 for (i=1; i<nWidth; i++)cout<<'\315';//─字符的扩展ASCII是315 cout<<"\273\n"; //┐字符的扩展ASCII是273 // 绘制矩形框的两边 for (i=1; i<nHeight; i++) { cout<<'\272'; //│字符的扩展ASCII是272 for (int j=1; j<nWidth; j++) cout<<' '; cout<<"\272\n"; } cout<<'\310'; //└字符的扩展ASCII是310 for (i=1; i<nWidth; i++) cout<<'\315'; cout<<"\274\n"; //┘字符的扩展ASCII是274 }