第2章 C++语言基础.ppt
《第2章 C++语言基础.ppt》由会员分享,可在线阅读,更多相关《第2章 C++语言基础.ppt(111页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第2章 C+语言基础C+C+语言程序设计语言程序设计中国铁道出版社中国铁道出版社张思民等主编张思民等主编第二章 C+语言基础本章内容提要本章内容提要n输入输出语句n数据类型n表达式和运算符n程序控制语句2.1 简单的输入输出语句简单的输入输出语句n1、输出语句ncout通过输出操作符“”将表达式1、表达式2、表达式n依次显示到屏幕上。n如果表达式是变量则将变量的值显示出来;n如果表达式是计算式,则先计算,再将计算的结果显示出来;n如果表达式是用双引号括起来的字符串,则将双引号括起来的内容“原样照印”的显示到屏幕上。cout cout 表达式表达式1 1 表达式表达式2 2 表达式表
2、达式n n;例例2-11 #include 2using namespace std; 3 void main() 4 5 cout 我对 C+ 很着迷!; 6 cout endl; 7 包含iostream头文件,该文件定义了输出流对象cout 定义名字空间输出流对象cout将字符输出到屏幕上显示换行例例2-2 在屏幕上输出显示一个用在屏幕上输出显示一个用“*”号号组成的三角形图形。组成的三角形图形。 1 #include 2 using namespace std;3 void main() 4 5 cout * endl; 6 cout * * * endl;7 cout * * * *
3、 * endl;8 cout * * * * * * * endl;9 包含iostream头文件时,必须定义名字空间双引号中的任何符号在输出时都将被“原样照印”,第一行输出1个“*”号,第二行输出3个“*”号,第三行输出5个“*”号,第四行输出7个“*”号。* * * * * * * * * * * * *输出结果:输出结果:例例 2-31 #include 2 using namespace std;3 void main() 4 5 cout 3 + 5 = 3 + 5 ”,使用输入流对象cin读取由键盘输入的字符和数字,并把它赋值给指定的变量。从键盘上输入的数据通过cin接收,再由输入
4、操作符 “”将数据赋值给指定的变量。输入操作符 “”也称为提取运算符。n同样,输入操作符 “”也是在iostream.h中定义的,因此,必须在程序的开头用#include包含iostream.h。例例2-4 从键盘上输入两个整数,再计算出两个数的和从键盘上输入两个整数,再计算出两个数的和 1 #include 2 using namespace std;3 void main()4 4 int a, b; 6 cout a ; 8 cout b ; 10 cout a “+” b “=” a + b endl;11 cout、cin需要头文件iostream使用名字空间int为定义整数类型变量
5、,这里定义的变量a、b只能接受整数cin读取由键盘输入的数字,并通过输入操作符把它赋值给变量a按照“原样照印”模式输出 cin读取由键盘输入的数字,并把它赋值给变量bn程序运行时,用cin接收用户输入的两个整数,然后计算并输出这两个数的和。比如用户通过键盘输入3后,按Enter键,然后输入5,再按Enter键,其运行结果如下:q 用户通过键盘给变量用户通过键盘给变量a、b赋值赋值q输入第一个整数,输入第一个整数,a = :3 q输入第二个整数,输入第二个整数,b = :5 q3 + 5 = 8n说明:在上面运行结果中,下划线表示的3 和5由用户输入,“ ”为Enter键。2.2 数据类型数据类
6、型nC+ 语言的数据类型可以分为两大类:基本数据类型和构造数据类型。q基本数据类型基本数据类型是由程序设计语言系统所定义、不可再划分的数据是由程序设计语言系统所定义、不可再划分的数据类型。基本数据类型在内存中存入的是数据值本身。类型。基本数据类型在内存中存入的是数据值本身。q构造数据类型构造数据类型在内存中存入的是指向存放该数据的地址,不是数在内存中存入的是指向存放该数据的地址,不是数据本身,它是在基本数据类型的基础上,由系统或用户自定义的。据本身,它是在基本数据类型的基础上,由系统或用户自定义的。构造数据类型也被称为复合数据类型。构造数据类型也被称为复合数据类型。n数据类型的作用有二个:q其
7、一,为数据在内存中分配合适的存储区域,同时也确定了数据其一,为数据在内存中分配合适的存储区域,同时也确定了数据范围;范围;q其二,规定数据所能进行的操作。其二,规定数据所能进行的操作。 2.2.2 基本数据类型基本数据类型nC+ 定义了多个基本数据类型:字节型,短整型,整型,长整型,无符号整型,字符型,浮点型,双精度型,布尔型,这些类型可分为4组: n整数型:该组包括字节型(byte),短整型(short),整型(int),长整型(long),它们都是有符号整数型,还有无符号整数型,即正整数型。 n浮点数型:该组包括浮点型(float),双精度型(double),它们代表有小数精度要求的数字。
8、 n字符:这个组包括字符型(char),它代表字符集的符号,例如字母和数字。 n布尔型:这个组包括布尔型(boolean),它是一种特殊的类型,表示真/假值。 类型数据类型关键字类型长度值域范围有符号短整数short, short int2-215215-1内的整数有符号整数int 4-231231-1内的整数有符号长整数long, long int, signed long int4-231231-1内的整数无符号短整数unsigned short int20216-1内的整数无符号整数unsigned int 40232-1内的整数无符号长整数unsigned long int 40232
9、-1内的整数单精度浮点型 float 4-3.402823*10383.402823*1038内的数双精度浮点型double 8-1.7977*103081.7977*10308内的数长双精度浮点型long double8-1.7977*103081.7977*10308内的数有符号字符char1-128+127内的整数无符号字符unsigned char10255内的整数逻辑bool 10和1n下面对表2-1作几点说明:n1、 对于每一种整数类型和字符类型,又可分为有符号和无符号两种类型。通常使用较多的是有符号类型,所以时常也把有符号类型简称为所属类型。如把有符号整数类型简称为整型或int型
10、,把有符号字符类型简称为字符型或char型。n 2、 类型长度是指存储该类型值域范围内的任一个数据所占有的存储字节数,该字节数由系统规定,并且对任一数据都相同。如短整型长度为2,即存储每个短整数占用2个字节,对应16个二进制位;整型长度为4,即存储每个整数占用4个字节,对应32个二进制位;字符型长度为1,即存储每个字符占用1个字节,对应8个二进制位。n3、 类型的值域范围是指该类型所对应的固定大小的存储空间按照相应的存储格式所能表示的值的范围。如对于有符号短整型来说,它对应2个字节的存储空间,存储格式为二进制整数补码格式,只能够表示(即存储)-215215-1,即-32768+32767之间的
11、所有整数。若一个整数小于-32768或大于32767,则它就不是该类型中的一个值,即它不是一个短整数。又如对于无符号字符类型来说,它对应1个字节的存储空间,存储格式为二进制整数无符号(隐含为正)格式,只能够表示028-1,即0255之间的所有整数。若一个整数小于0或大于255,则它就不是该类型中的一个值,即它不是一个字符数据。n4、 在32位的 C+ 版本中,整型(int)和长整型(long ing)具有完全相同的长度和存储格式,所以它们是等同的。但在早期的C+版本中,由于当时的机器字长为16位,所以整型和长整型的长度是不同的,前者为2个字节,后者为4个字节。无论如何,任一种C+ 语言都遵循s
12、hort int型的长度小于等于int型长度,同时int型长度又小于等于long ing型长度的规定。与上述情况类似,在32位的C+ 版本中,双精度型(double)和长双精度型(long double)也具有完全相同的长度和存储格式,它们是等同的。在其他C+ 语言中也可能不同,但无论如何,它们都遵循float型的长度小于等于double型长度,同时double型长度又小于等于long double型长度的规定。2.2.3 数据类型转换数据类型转换在在C+ 中有两种数据类型转换:中有两种数据类型转换:n数据类型自动转换n强制类型转换。1、数据类型自动转换、数据类型自动转换n在对数据进行运算时,
13、一般要求两个运算操作数的类型一致,如果操作数的类型不一致,则系统编译器会自动将这两个运算操作数转换成相同类型之后再进行运算。自动类型转换是按从低到高的顺序原则进行的。n各种数据类型按下列的高低顺序转换:n例如:计算10 + 2.5,先将10转换成双精度浮点型后再相加,结果为双精度浮点型的12.5。2、强制类型转换、强制类型转换n强制类型转换是在程序设计时显式指出的类型转换。强制类型转换的格式如下:qint a;qdouble b = 3.14;qa = (int)b;q结果结果 a = 3,b仍然是仍然是double类型,类型,b的值仍然是的值仍然是3.14。q从该示例可以看到,采用强制类型转
14、换将高类型数据转换成低类从该示例可以看到,采用强制类型转换将高类型数据转换成低类型数据时,可能会降低数据精度。型数据时,可能会降低数据精度。数据类型说明(表达式)数据类型说明(表达式)或(数据类型说明)表达式或(数据类型说明)表达式2.2.4 变量变量n在程序中,每一个数据都有一个名字,并且在内存中占据一定的存储单元。在程序运行过程中,数据值不能改变的量称为常量,其值可以改变的量称为变量。变量在程序运行过程中可以进行赋值,从而改变了原来的值。在C+ 语言中,所有常量及变量在使用前必须先声明其值的类型,也就是“先声明,后使用”。n每一个变量都属于一种数据类型,用来表示(即存储)该类型中的一个值。
15、在程序中只有存在了一种数据类型后,才能够利用它定义出该类型的变量。根据这一原则,我们可以随时利用C+ 语言系统提供的基本类型或用户自定义的类型定义需要使用的变量。一个变量只有被定义后才能被使用,即定义后的变量才能进行存储和读取其值的操作。1、变量的定义、变量的定义n变量定义是通过变量定义语句实现的,该语句的一般格式为:n为已存在的一种数据类型,如short, int, long, char, bool, float, double等都是类型关键字,n是用户定义的一个标识符,用来表示一个变量,该变量可以通过后面由方括号表示的可选项赋予一个值,称为给变量赋初值,是一个数值或表达式,它的值就是赋予变
16、量的初值。数据类型关键字数据类型关键字 变量名变量名=;2、变量定义语句示例、变量定义语句示例 n第一条语句定义了两个整型变量a和b;n第二条语句定义了两个字符变量ch1和ch2,并被分别赋初值为字符a和A,一个字符变量只能存放一个字符,不能存放字符串;n第三条语句定义了一个整型变量x,并赋予表达式a + 2 * b的值作为初值;n第四条语句定义了三个双精度变量,分别为d1, d2和d3,其中d2被赋予初值0.0,d3被赋予初值3.14159。3、变量定义语句执行过程、变量定义语句执行过程n当程序执行到一条变量定义语句时,首先为所定义的每个变量在内存中分配与类型长度相同的存储单元,如对每个整型
17、变量分配4个字节的存储单元,对每个双精度变量分配8个字节的存储单元。n定义变量时,若变量名后带有赋值表达式,则计算出初值表达式的值,并把它保存到变量所对应的存储单元中,表示给变量赋初值,若变量名后不带赋值表达式,将自动给变量赋予初值0,否则不赋予任何值,此时的变量值是不确定的,实际上是存储单元中的原有值。n在习惯上,常量名用大写字母表示,变量用小写字母表示,以示区别。例例2-5 定义三个变量,求和值并输出结果。定义三个变量,求和值并输出结果。 1 #include 2 using namespace std;3 void main( ) 4 5 int x; 6 float y, z, sum
18、; 7 x = 2; 8 y = 5.5; 9 z = 10.0; 10 sum = x + y + z; 11 cout sum = sum endl;12 例例2-6 实型数据的舍入误差实型数据的舍入误差 1 #include 2 using namespace std;3 void main( ) 4 5 float a,b; 6 a = 1234567890; 7 b = a + 20; 8 cout a = (int)a endl;9 cout b = (int)b endl; 10 a与b的输出结果相同,较小的整数部分被“丢失”。a = 1234567936a = 12345679
19、36b = 1234567936b = 1234567936n说明: n(1)实型变量是用有限的存储单元存储的,因此提供的有效数字是有限的,在有效位以外的数字将被舍去,由此可能会产生一些误差。n(2)由于实数存在舍入误差,使用时要注意:不要试图用一个实数精确表示一个大整数,因为浮点数是不精确的;实数一般不判断“相等”,而是判断接近或近似;避免直接将一个很大的实数与一个很小的实数相加、相减,否则会“丢失”小的数;根据实际问题的要求选择单精度或双精度类型。 #includeusing namespace std;void main( ) double a,b; /将a, b定义为双精度实数类型 a
20、 = 1234567890; b = a + 20; cout a = (int)a endl; cout b = (int)b endl; 运算精度运算精度得到保证得到保证a = 1234567890a = 1234567890b = 1234567910b = 12345679102.2.5 常量常量n常量有两种形式:q一种是直接常量,以字面值直接出现的数据量,如一种是直接常量,以字面值直接出现的数据量,如12、3.14、a等;等;q另一种是符号常量。另一种是符号常量。n符号常量是一个标识符,对应着一个存储空间,该空间中保存的数据就是该符号常量的值,这个数据是在定义符号常量时赋予的,是以后
21、不能改变的。n(1)用const定义符号常量n例如:const double PI = 3.14159; const const 数据类型符号常量名称初始值;数据类型符号常量名称初始值;n(2)用#define命令定义符号常量n注意,由于#define是预处理命令,语句不能以分号结束,且定义符号常量不能带数据类型,不能用赋值号赋值。n例如:#definePI3.14159#define #define 符号常量名初始值符号常量名初始值例例2-7 已知圆的半径已知圆的半径r,计算圆的面积,计算圆的面积s和周长和周长c。 1 #include 2 #define r 5.03 const doub
22、le PI = 3.14159 ;4 void main()5 6 double s, c;7 s = PI * r *r;8 c = 2 * PI * r;9 cout 圆的面积:s = s endl;10 cout 圆的周长:c = c endl;11 用#define定义符号常量r,没有带数据类型,没有用分号结尾用const定义符号常量PI符号常量参加运算, PI的值为3.14159,r的值为5.02、字符常量、字符常量C+ 中有两种字符常量:n即一般字符常量n转义字符常量(1)一般字符常量)一般字符常量n一般字符常量简称为字符,它以单引号作为起止标记,中间为一个或若干个字符。如a,%,
23、n,012,125,x4F等都是合乎规定的字符常量。每个字符常量只表示一个字符,当字符常量的一对单引号内多于一个字符时,则将按规定解释为一个字符。如a表示字符a,125解释为字符U(ASCII码值八进制的对应字符,详见转义符)。 n因为字符型的长度为1,值域范围是 -128127 或 0255,而在计算机领域使用的ASCII字符,其ASCII码值为 0127,正好在C+ 字符型值域内。所以,每个 ASCII 字符均是一个字符型数据,即字符型中的一个值。n将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中,而是将该字符相应的 ASCII 码放到内存单元中。n 对于一个字符,
24、当用于输出显示时,将显示出字符本身或体现出相应的控制功能,当出现在计算表达式中时,将使用它的 ASCII 码。 (1) char ch = E;(2) int x = ch + 2;(3) cout “ x = ” x C) cout ch C endl;(5)cout 125 C比较,实际上是取出各自的值(即对应的ASCII码)比较,因条件成立,所以执行其后的输出语句,将向屏幕输出E C。n第五条语句输出大写字母U,因为由“”后面跟3个数字(即“ddd”)组成的符号表示八进制数所代表的字符,八进制的125为十进制的85,其对应的ASCII码值为大写字母U。 (2)转义符)转义符n在C+中提供
25、了一些特殊的字符常量,这些特殊字符又称为转义符。通过转义符可以在字符串中插入一些无法直接键入的字符,如换行符、引号等。每个转义符都以反斜杠()为标志。例如,n代表一个换行符,这里的n不再代表字母n而作为换行符号,其 ASCII 码为10。n另外,也可以在反斜杠后面用八进制数或十六进制数表示一个字符,该值为所表示字符的ASCII码值。例如,3表示Ctrl + C,x0A表示回车换行。转义符ASCII码值对应功能a0 x07响铃b0 x08退格f0 x0c走纸换页n0 x0a换行r0 x0d回车(不换行)t0 x09水平制表v0 x0b垂直制表0 x5c反斜杠0 x27单引号”0 x22双引号?0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 C+语言基础 C+ 语言 基础
限制150内