




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 C+简单程序设计,C+语言程序设计,本章主要内容,C+语言概述(了解) 基本数据类型和表达式(掌握) 数据的输入与输出(掌握) 算法的基本控制结构(了解) 自定义数据类型(理解),2.1.1 C+语言的产生,C+是从C语言发展演变而来的,首先是一个更好的C 引入了类的机制,最初的C+被称为“带类的C” 1983年正式取名为C+ 从1989年开始C+语言的标准化工作 于1994年制定了ANSI C+标准草案 于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C+,2.1 C+语 言 概 述,2.1.2 C+的特点,全面兼容C 它保持了C的简洁、高效和接近汇编语言等特点 对C的类型系统进行了改革和扩充 C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言 支持面向对象的方法,C+语言概述,2.1,2.1.3 C+程序实例例2-1,/2_1.cpp #include using namespace std; void main(void) cout“Hello!n“; cout“Welcome to c+!n“; 运行结果: Hello! Welcome to c+!,C+语言概述,2.1,C+程序的结构与基本组成 一个简单的C+程序,是由若干个函数构成的,其中有且仅有一个名称为main的函数存在,下图说明了C+程序的基本框架结构:,1声明区 声明区处在程序文件的所有函数的外部。 (1)包含头文件:如#include “iostream.h“ (2)宏定义:如#define PI 3.1415926 (3)类定义:如class name; (4)结构体定义:如struct record; (5)函数声明:如void print(); (6)全局变量声明:如float H=2.58; (7)条件编译:如#ifdef等。,2主程序区 主程序以main()函数开始,是整个程序运行的入口,该函数中可能包含的内容主要有: (1)局部变量的声明:如:int i=1; (2)函数调用:如:y=sin(x); (3)一般运算:如:a=b+c+d/3; (4)结构控制:如:if(ab) c=a; (5)对象与结构的处理。 (6)文件的处理等。,4程序举例,3函数定义区 程序中除了main函数之外,还可以包含其它的函数,每个函数是由函数说明和函数体两部分构成的。如图所示:,从上例可以看出: (1)C语言中原有的规则和语句在C+中仍可继续使用,但C+又增添了很多新的风格。 (2)一个C+的程序是由一到若干个函数构成的,但其中必须有且仅有一个名称为main的函数存在。 (3)不管一个程序中有多个函数,只有main函数整个程序运行时的入口,程序运行时从此函数开始执行。但在程序中,main函数所处的位置可以任意。 (4)一个C+的函数是由两部分构成的,即函数的说明部分和函数体,函数的说明部分包括了函数的返回值的类型、函数的名称、圆括号、形参及形参的类型说明。函数体由一对大括号括起来,其内容是由若干条语句构成,函数体的内容决定了该函数的功能。,(5)C+对程序中的名称是大小写“敏感”的,除特殊情况下,应一律小写。 (6)程序中的注释:可以用/*/或/(单行注释)对程序中的内容进行注释。二者的区别在于,采用/*/方法时,注释可以写成多行,而采用/方法时,注释只能写成一行,它可单独占一行,也可写在某行程序代码的末尾。 (7)数据输出:除了使用printf( )函数,还可使用功能更强大、更方便的cout对象进行输出数据。格式如下: cout数据1 数据2 数据n 如:上例中的语句couts“ is ”i“ years old.”; 表示同时输出了变量s的值、字符串“is”、变量i的值和字符串“years old.”,(8) 数据输入:除了使用scanf( )函数,还可使用功能更强大、更方便的cin对象进行数据输入。格式如下: cin变量1变量2变量n 如:上例中的语句cins;表示给变量s输入一个值 (9) 在分别使用cout和cin进行数据的输出和输入时,需要在程序的开头嵌入”iostream.h”文件。在该头文件中定义了输入输出流对象cout和cin等。 (10) 一个C+的源程序文件在存盘时,要以.CPP为文件名后缀,而不是.C。,2.1.4 C+字符集(与c语言完全相同),大小写的英文字母:AZ,az 数字字符:09 特殊字符: 空格 ! # % . , () ,C+语言概述,2.1,2.1.5 词法记号,关键字 C+预定义的单词 P22 标识符 程序员声明的单词,它命名程序正文中的一些实体 文字 在程序中直接使用符号表示的数据 操作符 用于实现各种运算的符号:+,-,*,/等 分隔符 ( ) , : ; 用于分隔各个词法记号或程序正文 空白符 空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称,C+语言概述,2.1,标识符的构成规则(与c语言相同),以大写字母、小写字母或下划线(_)开始。 可以由以大写字母、小写字母、下划线(_)或数字09组成。 大写字母和小写字母代表不同的标识符。 不能是c+关键字,C+语言概述,2.1,2.2.1基本数据类型,Page 17,基本数据类型和表达式,整型数据,与c语言完全相同(略)同学们课后自己看书,,常量与变量,字符型数据,布尔型数据,混合运算时的类型转换,运算符与表达式,语句,实型数据,2.2,数据类型 常量与变量,#include using namespace std; void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,Page 18,基本数据类型和表达式,#include using namespace std; void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,数据类型 整型数据,整型常量,short unsigned short 2字节 int、unsigned int 4字节 long unsigned long 4字节,整型变量,基本数据类型和表达式,c语言中是16位,2个字节,整型数据及取值范围,类型 说明符 位数 数值范围 短整 short 16 -3276832767 基本 int 32 -231(231-1) 长整 long 32 -231(231-1) 无符号 unsigned short 16 065535 unsigned int 32 0(232-1) unsigned long 32 0(232-1),基本数据类型和表达式,#include using namespace std; void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotalendl; r=2.5; h=3.2; v=3.14159*r*r*h; coutvendl; ,数据类型 实型数据,实型常量,float 4字节 3.41038 7位有效数字 double 8字节 1.710308 15位有效数字 long double 8字节 1.710308 15位有效数字,实型变量,缺省为double型 后缀 F(或 f) 为 float型 后缀 L(或 l) 为 long double 型,基本数据类型和表达式,数据类型 字符型数据(一),字符常量 单引号括起来的一个字符,如:a, D, ?, $ 字符变量 用来存放字符常量 例:char c1,c2; c1=a; c2=A; 字符数据在内存中的存储形式 以ASCII码存储,占1字节,用7个二进制位,Page 22,基本数据类型和表达式,字符数据的使用方法 字符数据和整型数据之间可以运算。 字符数据与整型数据可以互相赋值。 字符串常量 例:“CHINA“ “a“ a 所以:char c; c=“a“;,Page 23,数据类型 字符型数据(二),基本数据类型和表达式,数据类型 布尔型数据,布尔型变量的说明: 例:bool flag; 布尔型数据的取值: 只有 false 和 true 两个值,基本数据类型和表达式,数据类型 变量初始化,例: int a=3; double f=3.56; char c=a; int c(5);,Page 25,基本数据类型和表达式,变量的存储类型,auto 属于临时性存储,其存储空间可以被若干变量多次覆盖使用。 register 存放在通用寄存器中。 extern 在所有函数和程序段中都可引用。 static 在内存中是以固定地址存放的,在整个程序运行期间都有效。,基本数据类型和表达式,2.2.2 表达式 1 算术运算符与算术表达式,基本算术运算符 + - * / (若整数相除,结果取整) %(取余,操作数为整数) 优先级与结合性 先乘除,后加减,同级自左至右 +, -(自增、自减) 例:i+; - j;,Page 27,基本数据类型和表达式,2 赋值运算符和赋值表达式 简单的赋值运算符“=“,举例 n=n+5 表达式的类型 等号左边对象的类型 表达式的值 等号左边对象被赋值后的值,Page 28,基本数据类型和表达式,2 赋值运算符和赋值表达式 复合的赋值运算符,有10种复合运算符: +=, -=, *=, /=, %=, =,&=,=,|= 例 a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8),基本数据类型和表达式,赋值运算符和赋值表达式 赋值表达式举例,a=5 表达式值为5 a=b=c=5 表达式值为5,a,b,c均为5 a=5+(c=6) 表达式值为11,a为11,c为6 a=(b=4)+(c=6) 表达式值为10,a为10,b为4,c为6 a=(b=10)/(c=2) 表达式值为5,a为5,b为10,c为2 a+=a-=a*a 相当于 a=a+(a=a-a*a),Page 30,基本数据类型和表达式,3 逗号运算和逗号表达式,格式 表达式1,表达式2 求解顺序及结果 先求解1,再求解2,最终结果为表达式2的值 例 a=3*5 , a*4 最终结果为60,Page 31,基本数据类型和表达式,4 关系运算与关系表达式,关系运算是比较简单的一种逻辑运算,优先次序为: = = = != 优先级相同(高) 优先级相同(低) 关系表达式是一种最简单的逻辑表达式 其结果类型为 bool,值只能为 true 或 false。 例如:ab,c=a+b,x+y=3,基本数据类型和表达式,5 逻辑运算与逻辑表达式,逻辑运算符 !(非) &(与) |(或) 优先次序: 高 低 逻辑表达式 例如:int a=5,b=3,x=10,y=20; 则 (ab) & (xy) 的值为? 其结果类型为 bool,值只能为 true 或 false,基本数据类型和表达式,6 条件运算符与条件表达式,一般形式 表达式1?表达式2:表达式3 表达式1 必须是 bool 类型 执行顺序 先求解表达式1, 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果 例: x=ab? a:b;,基本数据类型和表达式,条件运算符与条件表达式,注意: 条件运算符优级高于赋值运算符,低于逻辑运算符 表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。 例: x=ab? a:b;,基本数据类型和表达式,7 sizeof 运算符,语法形式 sizeof (类型名) 或 sizeof (表达式) 结果值: “类型名”所指定的类型或“表达式”的结果类型所占的字节数。 例: sizeof(short) sizeof(x),基本数据类型和表达式,运算符优先级,括号 +,-,sizeof *, /, % +, - =, != 位运算 & | ?: 赋值运算 逗号运算,低,高,基本数据类型和表达式,数据类型 混合运算时的类型转换,不同类型数据进行混合运算时,C+编译器会自动进行类型转换。 为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据。 可以采用强制类型转换: 例如: float c; int a,b; c=float(a)/float(b); 或 c= (float)a/(float)b;,基本数据类型和表达式,混合运算时数据类型的转换 隐含转换,一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。 在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。 char short int unsigned long unsigned long float double 低 高,基本数据类型和表达式,混合运算时数据类型的转换 隐含转换,当参与运算的操作数必须是bool型时,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。 位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换, 赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动将右值转换为左值的类型。,基本数据类型和表达式,混合运算时数据类型的转换 强制类型转换,语法形式: 类型说明符(表达式) 或 (类型说明符)表达式 强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。,基本数据类型和表达式,2.3 数据的输入与输出,I/O流,预定义的插入符与提取符,在C+中,将数据从一个对象到另一个对象的流动抽象为“流”。,2.3.1 I/O 流,流在使用前要被建立,使用后要被删除; 从流中获取数据的操作称为提取操作; 向流中添加数据的操作称为插入操作; 数据的输入与输出是通过流来实现的; cin是预定义的用来处理标准输入的流类对象-键盘; cout是预定义的用来处理标准输出的流类对象屏幕;,2.3.2 预定义的插入符和提取符 1 预定义的插入符,“”是预定义的插入符,作用在流类对象cout上,用来实现屏幕输出。 格式: cout表达式表达式. 在输出语句中,可以串联多个插入运算符,输出多个数据项。在插入运算符后面可以写任意的表达式,系统会自动计算出它们的值并传递给插入符。例如: cout“Hello! n”; 将字符串“Hello! ”输出到屏幕上并换行。 cout“a+b”a+b; 将字符串“a+b”和表达式a+b的计算结果依次在屏幕上输出。,2 预定义的提取符,“”是预定义的提取符,作用在流类对象cint上,用来实现键盘输入。 格式: cin变量变量. 在输入语句中,可以串联多个提取运算符,用于实现给多个变量输入数据,变量的类型可以不一致。例如: int a,b; cinab; 要求从键盘上输入两个int型数,两数之间以空格分隔。若输入 5 6 这时,变量a得到的值为5,变量b得到的值为6。,2.3.3 简单的I/O格式控制,在数据输入输出时,cin和cout能对数据自动按正确的格式进行处理,除此之外,还可按特殊的格式加以处理 。,这些操纵符可以直接嵌入到输入输出语句中实现I/O控制。 使用该操纵符,必须在源程序的开头包含iomainip头文件。,例如:要输出浮点数3.1415并换行,设置域宽为5个字符,小数点后保留两位有效数字,输出语句如下:,coutsetw(5) setprecision(3) 3.1415endl;,作业 2-1、2、3、5、8、10、16、21、22、32,48,小结,C+字符集,大小写的英文字母:AZ,az 数字字符:09 特殊字符: 空格 ! # % . , () ,49,词法记号,关键字 C+预定义的单词 标识符 程序员声明的单词,它命名程序正文中的一些实体 文字 在程序中直接使用符号表示的数据 操作符 用于实现各种运算的符号 分隔符 () , : ; 用于分隔各个词法记号或程序正文 空白符 空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称,50,类型 说明符 位数 数值范围 短整 short 16 -3276832767 基本 int 32 -231(231-1) 长整 long 32 -231(231-1) 无符号 unsigned short 16 065535 unsigned int 32 0(232-1) unsigned long 32 0(232-1),整型数据及取值范围,51,实型数据,float 4字节 3.41038 7位有效数字 double 8字节 1.710308 15位有效数字 long double 8字节 1.710308 15位有效数字,整型兼容,bool 1字节 false true char 1字节 -128127 unsigned char 1字节 0255,52,汉、“汉”哪种表示正确? m=k - -; 等价于: m=k; k- =1; k- = 1; m=k;,53,if (表达式) 语句 例:if (xy) couty) coutx; else couty; if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句 n,if 语句 三种形式,算法的基本控制结构,54,一般形式 if ( ) if ( ) 语句 1 else 语句 2 else if ( ) 语句 3 else 语句 4 注意 语句 1、2、3、4 可以是复合语句,每层的 if 与 else 配对,或用 来确定层次关系。,算法的基本控制结构,55,一般形式 switch (表达式) case 常量表达式 1:语句1 case 常量表达式 2:语句2 case 常量表达式 n:语句n default : 语句n+1 ,switch 语句,执行顺序 以case中的常量表达式值为入口标号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论