1、1.1 C+语言概述 1.1.1 从C到C+1.1.2 C+面向对象的特性 1.1.3 C+的词法与规则 1.1.4 C+程序结构的组成 1.1.5 C+程序的开发步骤返回首页1.1.1 从C到C+C+语言源于C语言,而C语言是在B语言的基础上发展起来的。1960年出现了一种面向问题的高级语言ALGOL 60,但它离硬件比较远,不宜用来编写系统软件。1963年英国剑桥大学推出了CPL(Combined Programming Language)语言,后来经简化为BCPL语言。1970年美国贝尔(Bell)实验室的K.Thompson以BCPL语言为基础,设计了一种类似于BCPL的语言,取其第一
2、字母B,称为B语言。1972年美国贝尔实验室的Dennis M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。返回本节1.1.2 C+面向对象的特性1C+支持数据封装支持数据封装就是支持数据抽象。在C+中,类是支持数据封装的工具,对象则是数据封装的实现。2C+类中包含私有、公有和保护成员C+类中可定义三种不同访问控制权限的成员。一种是私有(Private)成员,另一种是公有(Public)成员,还有一种是保护(Protected)成员。3C+中通过发送消息来处理对象C+中是通过向对象发送消息来处理对象的,每个对象根据所接收到的消息的性质
3、来决定需要采取的行动,以响应这个消息。4C+中允许友元破坏封装性类中的私有成员一般是不允许该类外面的任何函数访问的,但是友元便可打破这条禁令,它可以访问该类的私有成员(包含数据成员和成员函数)。5C+允许函数名和运算符重载C+允许一个相同的函数名或运算符代表多个不同实现的函数,这就称函数或运算符的重载,用户可以根据需要定义函数重载或运算符重载。6C+支持继承性C+中可以允许单继承和多继承。7C+支持动态联编C+中可以定义虚函数,通过定义虚函数来支持动态联编。返回本节1.1.3 C+的词法与规则 1C+的字符集C+中含有以下字符:数字,小写字母,大写字母,运算符,特殊字符,不可印出字符。2词与词
4、法规则(1)标识符。(2)关键字。(3)运算符和分隔符。(4)字符串。(5)常量。(6)注释。3书写格式(1)一般情况下每个语句占用一行。(2)不同结构层次的语句。(3)表示结构层次的大括弧。(4)适当加些空格和空行。表1-1 C+的标准保留字返回本节1.1.4 C+程序结构的组成C+程序结构的基本组成包括以下几个部分:(1)预处理命令,C+提供了三类预处理命令:宏定义命令、文件包含命令和条件编译命令。(2)输入输出,C+程序中总是少不了输入和输出语句,实现与程序内部的信息交流。(3)函数(4)语句(5)变量(6)其他 下面用一个简单的程序例子来分析C+程序的构成。例1-2:C+程序构成示例。
5、/*-C+程序构成示例-*/注释#define PI 3.1415926 /宏定义命令,定义符号常量PI#include/文件包含命令void main()/主函数 double length,area,radius;/定义变量coutPlease input radius:radius;/输入语句length=2*PI*radius;area=PI*radius*radius;coutlength=lengthendl/输出语句area=areaendl;返回本节1.1.5 C+程序的开发步骤1编辑是指把按照C+语法规则编写的程序代码通过编辑器(Borland C+5.05,Visual C
6、+6.0,Turbo C+3.0)输入计算机,并保存。2编译将编辑好的C+源程序通过编译器转换为目标文件(OBJ文件)。即生成该源文件的目标代码。3链接将用户程序生成的多个目标代码文件(.obj)和系统提供的库文件(.lib)中的某些代码连接在一起,生成一个可执行文件(.exe)。4执行把生成的可执行文件运行,在屏幕上显示运行结果。用户可以根据运行结果来判断程序是否出错。返回本节1.2 基本数据类型和表达式 1.2.1 数据类型概述 1.2.2 常量 1.2.3 变量返回首页图1-1 C+数据类型1.2.1 数据类型概述1基本数据类型基本数据类型有4种:整型(int)、浮点型(float)、字
7、符型(char)、逻辑型(bool)。2空类型void:用于显示说明一个函数不返回任何值。3构造类型,又称为组合类型,它是由基本类型按照某种规则组合而成的。4指针类型:变量用于存储另一变量的地址,而不能用来存放基本类型的数据。5类类型:是体现面向对象程序设计的最基本特征,也是体现C+与C最大的不同之处。返回本节1.2.2 常量 1整型常量 整型数据表示通常意义上的整数,整型常量可以用十进制、八进制或十六进制表示。2浮点数常量 浮点数也称为实型数。只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。3字符常量与字符串常量(1)字符常量。(2)转义字符。(3)字符串常量。4逻辑常量逻辑
8、常量是逻辑类型中的值,Visual C+用保留字bool表示逻辑类型,该类型只含有两个值,即整数0和1,用0表示逻辑假,用1表示逻辑真。5枚举常量枚举常量是枚举类型中的值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中定义它后才能被使用。6地址常量指针类型的值域是0232-1之间的所有整数,每一个整数代表内存空间中一个对应单元(若存在的话)的存储地址,每一个整数地址都不允许用户直接使用来访问内存,以防止用户对内存系统数据的有意或无意的破坏。表1-2 常用的特殊字符 返回本节1.2.3 变量1变量命名变量的命名要遵守以下规则:(1)不能是C+保留字。(2)第一个字符必须是字母或下划线,
9、中间不能有空格。(3)变量名除了使用26个英文大小写字母和数字外,只能使用下划线。(4)一般不要超过31个字符。(5)变量名不要与C+中的库函数名、类名和对象名相同。2变量定义和说明变量定义是通过变量定义语句实现的,该语句的一般格式为:=,;3变量初始化变量初始化一般采用两种方式。第一种方式是在定义变量时可以给变量赋一个初值,例如:int a=3;float b=3.4;const int c=5;第二种方式是先定义变量,然后通过赋值语句使变量初始化,例如:int a;a=3;返回本节1.3 运算符与表达式 1.3.1 运算符 1.3.2 表达式 1.3.3 数据类型转换返回首页C+语言的运算
10、符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为:l 单目运算符(一元运算符,只需一个操作数)l 双目运算符(二元运算符,需两个操作数)l 三目运算符(三元运算符,需三个操作数)1.3.1 运算符 1算术运算符 2赋值运算符 3关系运算符 4逻辑运算符 5自增、自减运算符 6条件运算符 7位运算符 8sizeof运算符(求字节运算符)9逗号运算符1算术运算符 算术运算符包括双目运算符和单目运算符两种。包括:l +加法运算符,或正值运算符,如1+2,+3)l -(减法运算符,或负值运算符,如1-2,-3)l *(乘法运算符,如1*2)l /(除法运算符,如1/2)l%(模运算符或称求
11、余运算符,如7%3=1)2赋值运算符(1)赋值运算符“=”的一般格式为:变量=表达式;(2)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。(3)赋值运算符的结合性是从右至左的,因此,C+程序中可以出现连续赋值的情况。(4)复合运算符:3关系运算符(1)关系运算符用于两个值进行比较,运算结果为true(真)或false(假),分别用值非0(true)或0(false)表示。(2)关系运算符都是双目运算符,其结合性是从左到右,、=运算符的优先级相同,=和!=运算符的优先级相同,前者运算的优先级高于后者。(3)关系运算符的优先级低于算术运算符。4逻辑运算符C+中的逻辑运算
12、符为:&(逻辑与),|(逻辑或),!(逻辑非)。逻辑表达式的结果为真则为1,结果为假则为0。逻辑非(!)是单目运算符,逻辑与(&)和逻辑或(|)是双目运算符。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑运算真值表如表1-3所示。表1-3 逻辑运算真值表(真为非0,假为0)5自增、自减运算符(1)自增(+)、自减(-)运算符为变量的增1和减1提供了紧凑格式。(2)自增、自减运算符都是单目运算符,其作用是使变量的值增1或减1。(3)自增、自减运算符有四种应用格式:(4)C+编译器在处理时尽可能多的自左向右将运算符结合在一起。(5)在调用函数时,实参的求值顺序一般为自右向左。而不是PASCAL语
13、言那样自左向右。6条件运算符(1)条件运算符“?:”是C+中惟一的三目运算符,其形式为:表达式1?表达式2:表达式3(2)条件运算符的结合性是自右向左。(3)条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。7位运算符(1)位(bit)是计算机中表示信息的最小单位,一般用0和1表示。(2)位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。8sizeof运算符(求字节运算符)(1)sizeof运算符是单目运算符,用于计算运算对象在内存中所占字节的多少,它有两种形式:sizeof(类型标识符);sizeof 表达式;(2)sizeof可以接受的类型标识符很
14、多,如sizeof(int)表示求整型数据在内存中所占字节数。9逗号运算符(1)逗号运算符用于将多个表达式连在一起,并将各表达式从左到右的顺序依次求值,但只有其最右端的表达式的结果,作为整个逗号表达式的结果。(2)逗号表达式的一般格式为:表达式1,表达式2,表达式n返回本节1.3.2 表达式 1算术表达式 2逻辑表达式 3关系表达式 4赋值表达式 5条件表达式 6逗号表达式返回本节1.3.3 数据类型转换 1隐式类型转换隐式类型转换是由编译器自动完成的类型转换 2显式类型转换显式类型转换是由程序员显式指出的类型转换,转换形式有两种:类型名(表达式)(类型名)表达式图1-2 数据类型转换的顺序
15、返回本节1.4 程序的基本控制结构 1.4.1 顺序结构 1.4.2 选择结构 1.4.3 循环结构 1.4.4 转移语句返回首页1.4.1 顺序结构 1表达式语句 2输入/输出(I/O)3复合语句1表达式语句 表达式是指用运算符连接各个运算对象,合乎语法规则的式子。在C+程序中,几乎所有的操作运算都通过表达式来实现,而表达式语句也就成了C+程序中最简单也是最基本的一类语句。(1)空语句。(2)赋值语句。(3)函数调用语句2输入/输出(I/O)(1)输入。当程序需要执行键盘输入时,可以使用抽取操作符“”从输入流cin中抽取键盘输入的字符和数字,并把它赋给指定的变量。(2)输出。当程序需要在屏幕
16、上显示输出时,可以使用插入操作符“”向输出流cout中插入字符和数字,并把它在屏幕上显示输出。3复合语句C+语言允许把一组语句用一对花括号括起来,构成一个复合语句。例如:int a;a=1+2;复合语句是若干条语句的一个集合,它在语法上是一个整体,相当于一个语句。复合语句与简单语句一样地使用。返回本节1.4.2 选择结构 1ifelse语句(1)if语句。(2)空语句。(3)ifelse语句。2switch语句switch语句是多分支的选择语句。1ifelse语句例1-4:判断用户的输入,如果输入的数值大于0,则在屏幕上显示“正数”;否则在屏幕上显示“不是正数”。#includevoid ma
17、in()int a;cina;if(a0)cout正数endl;else cout不是正数endl;例1-5:判断用户的输入,根据输入数值是大于0、等于0、小于0,分别在屏幕上显示“正数”、“零”、“负数”。#includevoid main()int a;cina;if(a0)cout正数endl;else if(a0)cout负数endl;elsecout零endl;2switch语句switch语句的语法格式为:switch(整数表达式)case 常量表达式1:;case 常量表达式2:;case 常量表达式n:;default:;例如,根据考试成绩的等级输出百分制分数段:char gr
18、ade;/switch(grade)caseA:cout 85100n;break;caseB:cout 7084n;break;caseC:cout 6069n;break;caseD:cout 60n;break;default:cout errorn;break;有几点说明:(1)default语句是可缺省的。(2)switch后面括号中的表达式只能是整型、字符型或枚举型表达式。(3)在各个分支中的break语句起着退出switch语句的作用。(4)case语句起标号的作用。标号不能重名,所以每一个case常量表达式的值必须互不相同,否则就会出现编译错误。(5)当多个分支需要执行同一操作
19、时,可以使多个case语句共用一组语句序列。(6)各个case(包括default)语句的出现次序可以任意。(7)每个case语句中可以有多条语句组成相应的语句序列,但不必用。例1-6:读入一行字母,求其中元音字母出现的次数。#include#include void main()char c;int count=0;while(c=getche()!=n)switch(c)case a:case A:case e:case E:case i:case I:case o:case O:case u:case U:count+;break;coutcountendl;返回本节1.4.3 循环结构
20、 C+提供了三种循环控制语句:while语句,dowhile语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。while语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。1while语句 1while语句while语句的语法格式为:while(条件表达式)循环体;它的含义为:首先对条件表达式进行判断,若判断结果为假(false,0),则跳过循环体,执行while结构后面的语句。若判断结果为真(true,非0),则进入循环体,执行其中的语句序列。while循环由4个部分组成:循环变量初始
21、化,判断条件,循环体,改变循环变量的值。例如,计算sum=1+2+3+10的while循环结构如下:sum=0;i=1;/循环变量初始化while(i=10)/判断条件 /循环体 sum=sum+i;i+;/改变循环变量的值例1-7:输入一行字符,求其中字母、数字和其他符号的个数。解:#include#include void main()char c;int letters=0,digit=0,others=0;cout=a&c=A&c=0&climit程序如下:#include void main()int i=0,sum=0;float limit;cout limit;do i+;su
22、m+=1/i;while sum=limit;cout10)break;等价于:for(i=1;5;i+)sum+=i;if(i10)break;例1-9:输出菲波那切数列的前20项。即前两项为1,以后每一项为前两项之和。#include void main()int i1=1,i2=1,i3,i;couti1 i2;for(i=3;i=20;i+)i3=i1+i2;couti3;i1=i2;i2=i3;返回本节1.4.4 转移语句 1break语句break语句的作用是:结束当前正在执行的循环(for、while和dowhile)或多路分支(switch)程序结构,转而执行这些结构后面的语句
23、。2continue语句continue语句的作用是:结束当前正在执行的这一次循环(for、while和dowhile),接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。3goto语句goto语句的语法格式为:goto 标号;例如,下面的代码在执行了break之后,继续执行“a+=1;”处的语句,而不是跳出所有的循环。for(;)for(;)if(i=1)break;a+=1;/break跳至此处/for(;)for(;)if(i=1)break;a+=1;/break跳至此处/例1-10:编程求50100内的素数#include#include#defin
24、e MIN 51#define MAX 100void main()int i,j,k;for (i=MIN;i=MAX;i+=2)/素数必是奇数 k=int(sqrt(double(i);for (j=2;j=k+1)cout i;coutendl;输出结果为:53 59 61 67 71 73 79 83 89 97例1-11:编程从键盘上输入的10个数中所有正数之和。#include void main()int num;sum=0;coutplease input number:;for(int i=1;inum;if (num0)continue;sum+=num;cout sum=sumendl;例如:求1加到10的总和。i=1;sum=0;loop:sum+=i+;if(i=10)goto loop;cout the sum is sum endl;返回本节
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。