C++语言程序设计:第1章 概论_第1页
C++语言程序设计:第1章 概论_第2页
C++语言程序设计:第1章 概论_第3页
C++语言程序设计:第1章 概论_第4页
C++语言程序设计:第1章 概论_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-11-3P1C+语言程序设计遵循ISO/IEC 14882:2003C+标准2021-11-3P2第第1章章 概概 论论1.1 C+语言背景知识语言背景知识1.2 C语言的发展及特点语言的发展及特点1.3 C语言程序的书写格式和结构特点语言程序的书写格式和结构特点1.4 C语言的基本语法单位语言的基本语法单位1.5 简单的输入与输出简单的输入与输出1.6 运行运行C程序的一般步骤程序的一般步骤 2021-11-3P31.1 C+语言背景知识语言背景知识q1、何为程序设计?何为程序设计?C+语言有何用?语言有何用?q2、计算机的数和编码系统计算机的数和编码系统:q3、计算机的基本原理、

2、计算机的基本原理q4、程序设计语言、程序设计语言2021-11-3P4(1.1)1何为程序设计?何为程序设计?C+语言有何用?语言有何用? 程序设计是一个完整的过程,包含:设计、代码编写、调试、测试和源代码维护 程序设计的目标就是生成能够可靠执行且满足用户需求功能的可执行应用程序。 源代码(又叫源程序)是用程序设计语言写成的,本身无法运行于操作系统 C+、C是广泛使用的程序设计语言。2021-11-3P5(1.1)1何为程序设计?何为程序设计?C+语言有何用?语言有何用?(续续) C是结构化的程序设计语言,适合于系统级程序开发,最大代码量1w行左右 C+是面向对象( Object-orient

3、ed )的程序设计语言,适合于大规模级别的应用开发,是当今软件行业首选的程序设计语言之一 学习C+的好处:了解一门行业推崇的程序设计语言;了解面向对象的软件工程系统设计概念。2021-11-3P6(1.1)2、计算机的数和编码系统计算机的数和编码系统: (1)二进制二进制人们最习惯和熟悉的计数和运算方式是十进人们最习惯和熟悉的计数和运算方式是十进制,即逢十进一。而计算机内数是以制,即逢十进一。而计算机内数是以 二进制二进制 0 和和 1 来表示的。故存在现实与计算机中数表示方式来表示的。故存在现实与计算机中数表示方式的转换。的转换。同十进制数一样在计算机内部二进制数也有同十进制数一样在计算机内

4、部二进制数也有多位构成,彼此之间逢二进一,如同十进制数字多位构成,彼此之间逢二进一,如同十进制数字的每一位都有一个的每一位都有一个权值权值(同样的(同样的1在不同在不同数位数位上的上的取值),二进制数也是如此。取值),二进制数也是如此。2021-11-3P7(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.)例1:二进制位:二进制位: b7 b6 b5 b4 b3 b2 b1 b0 0 1 0 1 1 1 1 0 权权 值:值: 27 26 25 24 23 22 21 20 转换成转换成10进制数进制数 = b727 + b626 + b525 + b424 + b323 +

5、 b222 + b121 + b020 = 027 + 126 + 025 + 124 + 123 + 122 + 121 + 020 = 64 + 16 + 8 + 4 + 2 = 942021-11-3P8(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) 把二进制数转换成十进制数的方法把二进制数转换成十进制数的方法(称为二翻十运算)dec = bn12n1 + bn-22n-2 + .+ b12 + b0 式中,式中,bn1、bn-2、.、b1、b0均为二进制数(二进制码元)。均为二进制数(二进制码元)。 若二进制数的位数为若二进制数的位数为n(如如8位位),n个个bi

6、ts可表示可表示2n个数,无符号数数值范围是个数,无符号数数值范围是0 2n 1,如,如0 28 1 = 255,即所表示最大数值,即所表示最大数值255的二进制码,的二进制码,其其8个个bits都是都是1。2021-11-3P9(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) 位数越多表示数的动态范围越大,且最大数值再位数越多表示数的动态范围越大,且最大数值再加加1则则n位都变成位都变成0,并向,并向(n+1)位进位,称为位进位,称为“溢溢出出”,这就是说,这就是说n位二进制数已装满了,则溢出一个位二进制数已装满了,则溢出一个2n 数值后,再从零开始计数。数值后,再从零开

7、始计数。 十六进制和八进制数:十六进制和八进制数:由于二进制数较长,阅读和书写困难,且容由于二进制数较长,阅读和书写困难,且容易出错,而且易出错,而且4位二进制数可以用一位十六进制数来位二进制数可以用一位十六进制数来表示,表示,3位二进制数对应一位八进制数,它们之间具位二进制数对应一位八进制数,它们之间具有直接的、唯一的对应关系有直接的、唯一的对应关系如下表如下表所示所示2021-11-3P10(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) 十进制十进制 二进制二进制 十六进制十六进制 八进制八进制 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0

8、011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 172021-11-3P11(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) 从表中可知,二进制数和十六进制数之间的转换非常简捷从表中可知,二进制数和十六进制数之间的转换非常简捷方便,即方便,即4位二进制数可以用一位十六进制数来表示。例如:位二进制数可以用一位十六进制数来表示。

9、例如:94 = 0101,1110 = 5E(H)其中,其中,H是是Hexadecimal(十六进制的)第(十六进制的)第1个字母,在计算机个字母,在计算机领域中以标明十六进制数。但在代码中常写成领域中以标明十六进制数。但在代码中常写成0X5E. 十六进制数转换成十进制数:为了简便,我们讨论十六进制数转换成十进制数:为了简便,我们讨论4位十六进制位十六进制数的转换情况,(因为我们通常用数的转换情况,(因为我们通常用4位位16进制数表示进制数表示段内偏移地址段内偏移地址码码)dec=hex3163+hex2162+hex116+hex0例如:例如:0 x80AF= 8163+ 0162+A16+

10、F = 32768+0+160+15 = 32943 八进制类推八进制类推2021-11-3P12(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) (3)二进制数的原码、反码和补码:)二进制数的原码、反码和补码:以上的整数都是无符号整数,考虑带符号的整数在计算机内以上的整数都是无符号整数,考虑带符号的整数在计算机内如何表示呢如何表示呢 正号和负号如何表示正号和负号如何表示通常取一个二进制数的最高位为符号位,通常取一个二进制数的最高位为符号位,1表示负号,表示负号,0表示正号。表示正号。例如,一个例如,一个8bits二进制数的最高位是二进制数的最高位是b7,其后,其后7个个b

11、its是是它的数值,一个它的数值,一个16bits二进制数的最高位是二进制数的最高位是b15,其后,其后15bits是它的数值。这种表示法叫是它的数值。这种表示法叫原码原码反码:反码:正数的反码和原码相同;负数的反码是对原码负号后面二进制码正数的反码和原码相同;负数的反码是对原码负号后面二进制码各位取反各位取反(即将即将“0”变为变为“1”,“1”变为变为“0”)。?2021-11-3P13 (50)10的八位二进制原码为(00110010)原 (50)10的八位二进制原码为(10110010)原 (156)10的十六位二进制原码为 (0000000010011100)原 (156)10的十六

12、位二进制原码为 (1000000010011100)原(1.1)2、计算机的数和编码系统、计算机的数和编码系统(cont.)2021-11-3P14(1.1)2、计算机的数和编码系统、计算机的数和编码系统(cont.)(50)10的八位二进制原码为(00110010)原(50)10的八位二进制反码为(00110010)反(50)10的八位二进制原码为(10110010)原(50)10的八位二进制反码为(11001101)反2021-11-3P15(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.) 在计算机中,数的处理和存储形式既不是原码也不是在计算机中,数的处理和存储形式既不

13、是原码也不是反码,而是数的二进制补码!反码,而是数的二进制补码! 规则:正数的补码和原码相同;负数的补码是在该数规则:正数的补码和原码相同;负数的补码是在该数的反码的最低位加的反码的最低位加1。 求负运算变补运算,即:求出负号后面数的码按位求负运算变补运算,即:求出负号后面数的码按位取反取反1,如果负号后面的数还是负数,则递归地求,如果负号后面的数还是负数,则递归地求出该负号后面的数的码按位取反出该负号后面的数的码按位取反+1。减法运算用加法。减法运算用加法来实现(补码相加)。参与运算的所有数都以补码形来实现(补码相加)。参与运算的所有数都以补码形式表示。在内存中以补码来保存。式表示。在内存中

14、以补码来保存。2021-11-3P16(1.1)2、计算机的数和编码系统计算机的数和编码系统(cont.)(50)10的八位二进制原码为(00110010)原(+50)10的八位二进制反码为 (00110010)反(50)10的八位二进制补码为(00110010)补(50)10的八位二进制原码为(10110010)原(50)10的八位二进制反码为(11001101)反(50)10的八位二进制补码为(11001110)补m个个bits带符号的数带符号的数可表示可表示2m个二进制数,其数值范围:个二进制数,其数值范围:-2m-1 2m-1-1,如,如-27 27-1=-128 1272021-11

15、-3P17为什么要引入为什么要引入反码和补码?反码和补码?根据带符号数的原码表示法可知:根据带符号数的原码表示法可知:绝对值相同的正负两数,其数值位相绝对值相同的正负两数,其数值位相同,仅最高位(即符号位)不同。这同,仅最高位(即符号位)不同。这种表示法对带符号数的运算来讲不方种表示法对带符号数的运算来讲不方便,甚至产生问题。比如:便,甚至产生问题。比如:+94和和-94相加或者相加或者94-94这样的减法运算,正这样的减法运算,正确的结果应该是确的结果应该是0,而原码表示法的结,而原码表示法的结果却不为果却不为0。为了把减法运算转换成带。为了把减法运算转换成带符号数的加法运算,引入了反码和补

16、符号数的加法运算,引入了反码和补码的概念。码的概念。2021-11-3P181.1 C语言的入门知识语言的入门知识q1、何为程序设计?、何为程序设计?C+语言有何用?语言有何用?q2、计算机的数和编码系统计算机的数和编码系统:q3、计算机的基本原理计算机的基本原理q4、程序设计语言、程序设计语言2021-11-3P19(1.1)3、计算机的基本原理计算机的基本原理: (1)存储程序式计算机原理(冯纽曼存储程序式计算机原理(冯纽曼VonNeumann式计算机原理)式计算机原理) 原理:计算机在开始特定的工作时(比如计原理:计算机在开始特定的工作时(比如计算),将预先准备好的程序代码(指算),将预

17、先准备好的程序代码(指可执行代可执行代码码,而不是源代码)和数据通过一定的方式送到,而不是源代码)和数据通过一定的方式送到有记忆功能的组件有记忆功能的组件内存储器中保存起来,按内存储器中保存起来,按一定顺序存储,计算机工作时,只要知道程序中一定顺序存储,计算机工作时,只要知道程序中第一条指令存放的地址单元,就能顺序依次取出第一条指令存放的地址单元,就能顺序依次取出每一条指令加以识别,并执行指令所规定的操作,每一条指令加以识别,并执行指令所规定的操作,达到相应控制或计算的目的。达到相应控制或计算的目的。2021-11-3P20(1.1)3、计算机的基本原理计算机的基本原理: (2)计算机组成和层

18、次结构计算机组成和层次结构 微型机 系 统 (虚拟机) 硬件 (裸机) 主 机 外部设备 软件 工业控制 FA(Factory Automation) CPU(中央处理器) 输入(Input)/输出(Output)接口 内存储器(Memory) 总线(数据总线、地址总线和控制总线) 输入设备(键盘、鼠标、扫描仪.) 外存储器(磁盘机、光盘机.) 输出设备(显示器、打印机.) 多媒体硬件 (处理图像和声音的设备) 系统 软件 应用 软件 操作系统(MS-DOS、Windows.) 语言处理系统(BASIC、C+、Jave.) 科学计算 数据库技术 办公自动化 OA(Office Automati

19、on) 2021-11-3P21(1.1)3、计算机的基本原理计算机的基本原理:计算机系统的层次结构图计算机系统的层次结构图 裸机 操 作 系 统 语 言 处 理 系 统 用户开发平台 开放系统平台 件 软 用 通 件 软 具 工 应用软件 2021-11-3P22(1.1)3、计算机的基本原理计算机的基本原理:计算机系统的层次结构图主机外部设备外存储器控制台内存储器Memory中央处理单元CPU输入/输出接口地址总线数据总线控制总线执行程序在运行前会被加载到内存储器;程序运行过程中的变量数据和状态值也保存在内存储器中。主机外部设备外存储器控制台内存储器Memory中央处理单元CPU输入/输出

20、接口地址总线数据总线控制总线执行程序在运行前会被加载到内存储器;程序运行过程中的变量数据和状态值也保存在内存储器中。执行程序在运行前会被加载到内存储器;程序运行过程中的变量数据和状态值也保存在内存储器中。2021-11-3P231.1 C语言的入门知识语言的入门知识q1、何为程序设计?、何为程序设计?C+语言有何用?语言有何用?q2、计算机的数和编码系统计算机的数和编码系统:q3、计算机的基本原理、计算机的基本原理q4、程序设计语言程序设计语言2021-11-3P24(1.1)4、程序设计语言:程序设计语言:(1)汇编语言汇编语言 读写难、读写难、维护难维护难便于便于记忆记忆代码需具体机器代码

21、需具体机器 指令系统支持指令系统支持 代码复杂、编程效代码复杂、编程效率低;代码紧凑,率低;代码紧凑,执行效率高执行效率高 便于移值便于移值机器语言机器语言汇编语言汇编语言高级语言高级语言2021-11-3P25机器语言机器语言汇编语言汇编语言C语言语言高级语言翻译成机器语言后,方能在宿主机器中运行,高级语言翻译成机器语言后,方能在宿主机器中运行,这个翻译过程称作这个翻译过程称作“编译编译”2021-11-3P26(1.1)4、程序设计语言:程序设计语言:MCS51系列单片(微型计算)机的指令系统中的机器系列单片(微型计算)机的指令系统中的机器及汇编指令及汇编指令: 机器码指令机器码指令 汇编

22、指令汇编指令 操作内容操作内容 0000 ,0100(04H) INC A A + 1 A 0000 ,1110(0EH) INC R1 R1 + 1 R1 INC A(INC为单词为单词Increment的缩写),其的缩写),其操作含义是把累加器操作含义是把累加器A的内容(所存放的数据)的内容(所存放的数据)增增1后再放回后再放回A 2021-11-3P27(1.1)4、程序设计语言:程序设计语言:命令命令1:将:将a放入寄存器放入寄存器eax中中(ebp是数据段指针,是数据段指针,a_$是变量是变量 a的偏移位置)的偏移位置)mov eax,DWORD PTR a_$ ebp 8b 45

23、fcmov ecx,DWORD PTR b_$ ebp8b 4d f8add ecx,ecx03 c9sub eax,ecx2b c1Inc eax40mov DWORD PTR a_$ ebp,eax89 45 fc特点:晦涩、难懂、程序复杂工特点:晦涩、难懂、程序复杂工作量大;语言越低级,越靠近机作量大;语言越低级,越靠近机器;语言越高级越靠近人的表达器;语言越高级越靠近人的表达和理解。和理解。2021-11-3P28(1.1)4、程序设计语言:程序设计语言:(2)高级语言高级语言:比如:比如:Fortran、Basic、Pascal(ObjectPascal) 、C/C+、Java等等

24、特点:引入数据类型和方便的流程控制,以及更接近人特点:引入数据类型和方便的流程控制,以及更接近人的思维模式的程序设计语句。的思维模式的程序设计语句。 不局限于机器硬件,而且不要求对硬件有过多的理解;不局限于机器硬件,而且不要求对硬件有过多的理解; 属于高级语言属于高级语言有相应的数据类型,还有流程控制语有相应的数据类型,还有流程控制语言成分言成分;程序易读、易维护,编程工作量相对汇编语程序易读、易维护,编程工作量相对汇编语言低很多;言低很多; 代码移植性较好;代码移植性较好; 代码冗余量大,程序执行效率较低(有的高级代码冗余量大,程序执行效率较低(有的高级语言上语言上是先编译成汇编语言代码,再

25、编译成机器码)。是先编译成汇编语言代码,再编译成机器码)。对应前面的汇编指令用对应前面的汇编指令用C语言表达:语言表达:a =a2*b+12021-11-3P291.2 C/C+语言的发展及特点语言的发展及特点1.2.1 C/C+语言的发展过程语言的发展过程 C/C+语言是目前世界上流行最广泛的通用程序设计语言。语言是目前世界上流行最广泛的通用程序设计语言。C语言语言的发展过程可粗略地分为三个阶段:的发展过程可粗略地分为三个阶段:1970年至年至1973年为诞生阶段,年为诞生阶段,1973年至年至1988年为发展阶段,年为发展阶段,1988年以后为成熟阶段年以后为成熟阶段 。 C语言的发展过程

26、如下:语言的发展过程如下: 1960年:年:ALGOL 1963年:年:CPL 1967年:年:BCPL 1970年:年:B(托马森)(托马森) 1972年:年:C (里奇)(里奇)贝尔实验室贝尔实验室 80年代:年代:C+(Bjarne Stroustrup )贝尔实验室贝尔实验室1983年,年,ANSI制定了制定了ANSI C标准;标准;2021-11-3P301.2 C/C+语言的发展及特点语言的发展及特点1.2.1 C/C+语言的发展过程语言的发展过程 C/C+是目前世界上流行最广泛的通用程序设计语言。是目前世界上流行最广泛的通用程序设计语言。C语言的发展语言的发展过程可粗略地分为三个

27、阶段:过程可粗略地分为三个阶段:1970年至年至1973年为诞生阶段,年为诞生阶段,1973年至年至1988年为发展阶段,年为发展阶段,1988年以后为成熟阶段年以后为成熟阶段 。 C语言的发展过程如下:语言的发展过程如下: 1960年:年:ALGOL 1963年:年:CPL 1967年:年:BCPL 1970年:年:B 1972年:年:C贝尔实验室贝尔实验室 80年代:年代:C+(Bjarne Stroustrup )贝尔实验室贝尔实验室1983年,年,ANSI制定了制定了ANSI C标准;标准;1987年,年,ANSI又公布了又公布了87 ANSI C标准标准 ,明确定义了与机器无关的,明

28、确定义了与机器无关的C语言语言2021-11-3P311.2 C+语言的发展及特点语言的发展及特点1.2.1 C/C+语言的发展过程语言的发展过程(cont.) KernighanKernighan和和RitchieRitchie合编的合编的The C The C Programming LanguageProgramming Language(19881988版)详细介绍了版)详细介绍了ANSI CANSI C的全部内容,这本书成为最成功的计算机的全部内容,这本书成为最成功的计算机学术著作之一学术著作之一 19901990年,年,ISOISO国际标准化组织接受了国际标准化组织接受了87ANS

29、I C87ANSI C为为ISO ISO 标准(标准(ISO9899-1990ISO9899-1990) 19981998年年ISOISO国际标准化组织颁布了国际标准化组织颁布了C+C+程序设计语程序设计语言的国际标准言的国际标准ISO/IEC 1488-1998ISO/IEC 1488-1998 20032003更新的更新的C+C+标准:标准:ISO/IEC 14882:2003 ISO/IEC 14882:2003 2021-11-3P321.2.2 C/C+语言的特点语言的特点1. 介乎于高级语言和汇编语言之间,兼有两者的优点。介乎于高级语言和汇编语言之间,兼有两者的优点。2. 引用结构

30、化程序架构,便于软件工程化。引用结构化程序架构,便于软件工程化。3.语言简洁语言简洁(目标代码和源代码都很简洁目标代码和源代码都很简洁),且表达,且表达能力强,使用灵活,易于学习和应用。能力强,使用灵活,易于学习和应用。4.编译系统小巧(关键字个数、输入输出功能非语编译系统小巧(关键字个数、输入输出功能非语法成分、数据类型和流程控制结构的最佳组合)法成分、数据类型和流程控制结构的最佳组合)5. 可移植性好可移植性好 。2021-11-3P33 C/C+是一个杰出的程序设计语言,一方面,C/C+的语法限制不太严格,程序设计自由度大,它给程序员无限的自由空间去随意的运用该语言而不受系统约束,就象前

31、面的数据类型可以随意转换,数组下标可以越界,可以任意访问任一内存段等等,这是受批评最多的,但也是最受人喜爱的地方,它使得C /C+较之一个更严谨更完善,而有更多限制的语言更有市场。 和:2021-11-3P34和: (cont.)指针是C/C+自由和灵活的象征,指针类型可以使程序员访问机器系统的所有地址空间,而不正确使用指针则会导致用户程序的错误运行,甚至更严重的情况是造成整个系统的崩溃。正是指针的使用特殊性,C/C+的语法中对指针的类型检测进行了严格的限制。不同类型的指针不能参与运算、赋值等。2021-11-3P35和: (cont.)C/C+语言的灵活性可以使程序员编制任何类型的程序。但是

32、灵活也会使程序员为此付出代价:由于C/C+语法定义和检测较松,程序设计自由度大,使得对程序员的要求较高,Pascal和其它高级语言都通过严格的语法检查来保证程序的正确性,而C /C+则放宽了语法检查(典型的例子不对数组下标的越界进行语法检查),这就要求程序员要熟练掌握C /C+的语法规则,仔细检查所编程序,确保其正确无误,而不要过分地依赖C /C+编译器的查错功能。2021-11-3P36结构化编程 VS 面向对象编程过程性语言和面向对象的语言 C语言诞生初期,结构化程序设计盛行,精巧设计的C语言满足用户高效执行、低成本系统移植等需求。但随着开发规模的扩大,其不能很好描述现实世界中对象的缺点造

33、成了诸如代码维护、重用甚至代码设计等困难 C+应运而生恰恰是顺应大规模应用的开发,用类(class)类型和对象来对应现实世界中的物体,更好地设计描述现实世界的应用程序,方便了代码重用和代码维护2021-11-3P37类类(class)和对象和对象(object)实例的关系实例的关系OOP中的类中的类(class)定义定义OOP中的对象中的对象(object)实例实例2021-11-3P381.3 C/C+语言程序书写格式和结构特点语言程序书写格式和结构特点 1.3.1 C/C+语言程序的书写格式语言程序的书写格式2021-11-3P39【例】 #include int max(int,int)

34、; ; int main(void) int a,b,c; ; cinab; ;/从标准输入设备读取数据存入从标准输入设备读取数据存入a a和和b b c=max(a,b); ; cout“max =”c=y) z=x; ; else z=y; ; return z; ; 语句结束符注释符编译预处理函数原型说明定义变量赋值语句,函数调用函数定义函数定义程序执行出口程序执行出口程序执行入口点程序执行入口点标准输出流类的对象 cout标准输入流类的对象 cin、是流插入操作符2021-11-3P40 #include /预编译指令不是语句,没有分号 int max(int,int) ;/语句以分号

35、结尾,如函数原型语句 int main(void) int a,b,c; std:cinab; /std为名字空间为名字空间namespace,在,在iostream中定义中定义 c=max(a,b); std:cout“max =”c=y) z =x; else z =y; return z; 标准标准C+诞生前的用法:诞生前的用法: #include 标准标准C+: #include 放进名字空间放进名字空间std中中2021-11-3P41可以看出,可以看出,C/C+语言程序有以下若干格式特点语言程序有以下若干格式特点 :(1)C/C+语言程序习惯上使用小写英文字母。语言程序习惯上使用小

36、写英文字母。(2)C/C+语言程序也是由一个个的语句组成。语言程序也是由一个个的语句组成。(3)C/C+语言程序使用分号;作为语句的终止符或分隔符。语言程序使用分号;作为语句的终止符或分隔符。(4)一般情况下,每个语句占用一个书写行的位置。一般情况下,每个语句占用一个书写行的位置。(5)C/C+语言程序中用大括弧对语言程序中用大括弧对 ,表示程序的结构层次范,表示程序的结构层次范围。围。(6)C/C+语言程序中,为了增强可读性,可以使用适量的空语言程序中,为了增强可读性,可以使用适量的空格和空行。格和空行。2021-11-3P42标准C+库中标识符从属于std名字空间,注意特殊的访问格式#in

37、clude using std:cout; using std:cin; using std:endl; int main() / cout number1 number2; / 从键盘读入从键盘读入2个数据个数据 / return 0; #include using namespace std; int main() / cout number1 number2; /读入读入数据数据 / return 0; 2021-11-3P431.3.2 C/C+语言程序的结构特点语言程序的结构特点例例1.2 C/C+语言程序结构特点(语言程序结构特点(下面代码使用了标准下面代码使用了标准C的输入输出库

38、函数的输入输出库函数) #include /标准C的输入输出头文件stdio.h int max(int,int) ; int main(void) int a,b,c; scanf(“%d %d”,&a,&b); /scanf库函数在stdio.h中定义,与cin等价 c=max(a,b); printf(“max =%dn”,c); / printf库函数在头文件stdio.h中定义,与cout等价 return 0; int max(int x,int y) int z; if(x=y) z =x;else z =y; return z; 2021-11-3P44从上面程

39、序可看出:从上面程序可看出:(1)C/C+语言程序的执行是从主函数开始的,语言程序的执行是从主函数开始的,主函数中的所有语句执行完毕,则程序执行主函数中的所有语句执行完毕,则程序执行结束。结束。(2)main函数之外的其它函数都是在执行函数之外的其它函数都是在执行main函数时,通过函数时,通过嵌套调用嵌套调用得以执行的,在程序得以执行的,在程序中除了可以调用用户自己编制的函数外,还中除了可以调用用户自己编制的函数外,还可以调用由系统提供的标准库函数,如可以调用由系统提供的标准库函数,如scanf、printf 。2021-11-3P45C/C+程序基本结构小结:程序基本结构小结:(1) C/

40、C+程序的组成:程序的组成: 一个一个C/C+程序可以由干个函数定义构成,程序可以由干个函数定义构成,其中必须有且只能有一个以其中必须有且只能有一个以main命名的主函数。命名的主函数。(2) 函数定义的组成:函数定义的组成: 函数定义函数定义是一个是一个独立的程序块独立的程序块,相互不能,相互不能嵌套。嵌套。 一个函数定义由两个部分组成:一个函数定义由两个部分组成:函数头函数头和和函数体函数体。2021-11-3P46(3) C/C+标准函数标准函数 C/C+函数分为两类:函数分为两类: 标准函数标准函数 用户定义函数用户定义函数 用户定义函数用户定义函数是由程序员在自己的源程序中编写的是由

41、程序员在自己的源程序中编写的函数。函数。 标准函数标准函数是由是由C/C+编译程序提供的一些通用函数,编译程序提供的一些通用函数,C/C+标准函数又称为标准函数又称为C/C+库函数。库函数。 用户程序需要使用标准函数时,只需要使用前用用户程序需要使用标准函数时,只需要使用前用 # include包含该标准函数所需的系统头文件即可。包含该标准函数所需的系统头文件即可。2021-11-3P471.4 C/C+语言的基本语法单位语言的基本语法单位 1.4.1 标识符标识符 1.4.2 关键字关键字 1.4.3 分隔符分隔符 1.4.4 常量常量2021-11-3P481.4.1 标识符标识符1.标识

42、符标识符:在高级语言程序中由用户在高级语言程序中由用户(即程序员即程序员)或编译程序或编译程序(有有时称系统时称系统)定义的常量、变量、数据类型、函数、过程和程序定义的常量、变量、数据类型、函数、过程和程序等的名字。等的名字。2.标识符的组成规则标识符的组成规则 :由字母、下划线和数字由字母、下划线和数字(09)组成,其组成,其第一个字符必须是字母或下划线。第一个字符必须是字母或下划线。 字母要区分大小写;下划线字母要区分大小写;下划线_被作为一个字符看待。被作为一个字符看待。3. 标识符的有效长度:标识符的有效长度:能够被编译程序识别的标识符的字符能够被编译程序识别的标识符的字符的数目称为标

43、识符的有效长度。标准的数目称为标识符的有效长度。标准C规定标识符的有效长规定标识符的有效长度为度为31。注意:标识符不能与关键字同名。注意:标识符不能与关键字同名。2021-11-3P491.4.2 关键字关键字 关键字关键字由固定的小写字母组成,是系统预定的名字,用于表示由固定的小写字母组成,是系统预定的名字,用于表示C/C+语言的语句结构、数据类型、存储类型或运算符。关键字又称语言的语句结构、数据类型、存储类型或运算符。关键字又称为保留字为保留字 。标准。标准C定义的定义的32个关键字如下(个关键字如下(C+在在C基础上扩充到基础上扩充到63个):个):auto break case ch

44、ar constcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile2021-11-3P501.4.3 分隔符分隔符 分隔符分隔符:包括空格符、制表符、换行符、换页符及注:包括空格符、制表符、换行符、换页符及注释符。程序中两个相邻的标识符、关键字和常量之间必须释符。程序中两个相邻的标识符、关键字和常量之间必须用分隔符分开用分隔符分开(通常用空格符,逗号符等通常用

45、空格符,逗号符等)。1.4.4 常量(文字量)常量(文字量) 常量常量: 程序中其数值不发生变化的量程序中其数值不发生变化的量.C/C+语言中的语言中的常量有三类常量有三类:数数,字符和字符串字符和字符串 。此外。此外,C/C+语言中还经常语言中还经常使用两种表现形式不同的常量使用两种表现形式不同的常量:换码序列换码序列(又叫转义序列(又叫转义序列符)和符)和符号常量符号常量.。常量的类型是由常量的文字自身隐含说。常量的类型是由常量的文字自身隐含说明的明的 。2021-11-3P511.5 简单的输入与输出简单的输入与输出 一个完整的计算机程序一个完整的计算机程序,常常要求具备常常要求具备输入

46、输出功能输入输出功能.C/C+语言本身没有配备完语言本身没有配备完成输入输出的语句成输入输出的语句.C/C+语言程序的输入语言程序的输入输出功能是通过调用系统提供的标准函数输出功能是通过调用系统提供的标准函数实现的实现的 。2021-11-3P521.5.1 格式化输入输出函数格式化输入输出函数 格式化输入输出函数是按指定的格式完成输入输出格式化输入输出函数是按指定的格式完成输入输出过程过程. 1. 输出函数输出函数printf( ) 输出函数printf( )的一般使用形式如下: printf(“输出格式输出格式”,输出项系列输出项系列);调用前必须在程序开头加上头文件包含调用前必须在程序开

47、头加上头文件包含include 2021-11-3P53(1)printf( )函数的功能是按照给定的输出格式、把函数的功能是按照给定的输出格式、把输出项输出到标准输出设备,输出格式中用输出项输出到标准输出设备,输出格式中用%打头打头后面跟有一个字母的部分称为转换说明符。后面跟有一个字母的部分称为转换说明符。 %d、%u 十进制整数十进制整数 %x 十六进制整数十六进制整数 %o八进制整数八进制整数 %f 、%e、%g 浮点小数(实数)浮点小数(实数) %c 单一字符单一字符 %s 字符串字符串例例:printf(“v=%fn”,v); 2021-11-3P54(2)输出格式中除转换说明符以外

48、的其它字符都原输出格式中除转换说明符以外的其它字符都原封不动地输出到标准输出设备显示器上。其中以封不动地输出到标准输出设备显示器上。其中以打头后跟一个字母或数字的部分称为换码序列。打头后跟一个字母或数字的部分称为换码序列。它们的作用是输出控制符号和特殊字符,如上述它们的作用是输出控制符号和特殊字符,如上述输出格式中的输出格式中的n是回车换行的控制代码是回车换行的控制代码 。 有关换码系列的内容将在在第二章详细介绍。有关换码系列的内容将在在第二章详细介绍。2021-11-3P55(3)使用使用printf()函数可以有一个以上的输出项,这函数可以有一个以上的输出项,这时输出格式中的转换说明符与输

49、出项的个数必须相时输出格式中的转换说明符与输出项的个数必须相同。它们按各自的先后顺序一一对应。如下所示:同。它们按各自的先后顺序一一对应。如下所示:printf(. %d %x %f, a, b, c);printf(. %d %x %f, a, b, c);2021-11-3P562输入函数输入函数scanf( )输入函数输入函数scanf( )的一般使用形式如下:的一般使用形式如下: scanf(输入格式输入格式,输入项系列,输入项系列);调用前包含头文件调用前包含头文件stdio.h行缓冲输入,需要敲入回车键。行缓冲输入,需要敲入回车键。(1)输入格式串中一般只使用转换说明符,否则容易出

50、错。输入格式串中一般只使用转换说明符,否则容易出错。(2)输入项必须是地址量,输入项必须是地址量,(变量名前加上变量名前加上&表示变量的地表示变量的地址址)。2021-11-3P57(3) 输入分隔符的指定。在双引号包围的输入格式中,两个转输入分隔符的指定。在双引号包围的输入格式中,两个转换说明符换说明符%之间出现的字符就是他们对应输入项之间的分之间出现的字符就是他们对应输入项之间的分隔符。隔符。 如如scanf(%d:%d,&a,&b);这时输入的数据之间必须有分隔符,例如输入这时输入的数据之间必须有分隔符,例如输入3和和5,则实际,则实际输入时一定要输入输入时一定要

51、输入3:5(4) 输入长度的给定输入长度的给定 如如 scanf(%4d%2d%2d”,&a,&b,&c); 假设一个输入序列为:假设一个输入序列为:19900125 则则a=1990,b= 1,c=25(5) 输入数据时,遇到下列情况时该数据认为结束输入数据时,遇到下列情况时该数据认为结束 a.遇空格、回车或者遇空格、回车或者tab键键 b.遇宽度结束,如遇宽度结束,如“%3d”只取输入项三列只取输入项三列 c.遇非法输入结束。遇非法输入结束。2021-11-3P581.5.2 字符输入输出函数字符输入输出函数 字符输入输出函数是以一个字节的字符代码为单位完字符输入输

52、出函数是以一个字节的字符代码为单位完成输入输出过程的成输入输出过程的。1.字符输入函数字符输入函数getchar( )包含头文件包含头文件stdio.h。行缓冲输入。行缓冲输入。 getchar( )的功能是从键盘读入一个符号。在程序中必的功能是从键盘读入一个符号。在程序中必须用另一个变量接收读取的符号对应的代码值,如下所须用另一个变量接收读取的符号对应的代码值,如下所示:示: c=getchar( ); getchar(c););/2021-11-3P592. 字符输出函数字符输出函数putchar( )包含头文件包含头文件stdio.hputchar的功能是输出一个字符到标准输出设备的功能

53、是输出一个字符到标准输出设备(如:显示器)显示,它的常用调用格式如下:(如:显示器)显示,它的常用调用格式如下: putchar(c);或或putchar(c); 它把变量它把变量c的值作为的值作为ASCII编码值,把与该编码值对应编码值,把与该编码值对应的字符符号输出到标准输出设备显示的字符符号输出到标准输出设备显示;后者直接输出后者直接输出小写字母小写字母c 2021-11-3P601.5.3 字符串输入输出函数字符串输入输出函数1、gets() 包含stdio.h头文件 调用格式: char str33; gets(str); 功能:实现从标准输入设备中读入一个以回车换行符为结尾的字符串

54、,将回车换行符n转换成空字符0,送入字符数组str中。 说明:说明:一种行缓冲输入行缓冲输入,用户敲入回车,函数才开始提取数据。提取的数据被当做字符串。2021-11-3P612、puts() 包含stdio.h头文件 调用格式: 1、puts(“Hello!”);注:输出完 Hello!后会自动回车到下一行 2、 char string100 =“This is an example of out-putting string !”; puts(string);q 功能:实现字符串在外设上输出显示。把str数组中的字符串输出到标准输出设备上,并将隐含的0 转换为回车换行操作。2021-11-3P621.5.4 流输入输出控制流输入输出控制一、标准流 标准输入输出流控制是C+中引入的,在这里我们只作一个简单的介绍。在C中标准输入设备是键盘,设备名为 stdin,标准输出设备为显示器,设备名为stdout;在C+中同样的输入输出设备,其设备名对应为设备名对应为cin与与cout,它们实际上是C+中 类istream和类ostream的对象。 I / O流是实际输入输出的一系列字节,当程序需要在显示器上显示时,可以使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论