1、语言程序设计实例教程,中国高等职业技术教育研究会推荐,高 职 系 列 教 材,第1章 程序设计与C语言 第2章 C语言程序设计初步知识 第3章 简单程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 数 组 第7章 函 数 第8章 指 针 第9章 编译预处理 第10章 结构体和共用体 第11章 位运算 第12章 文 件 第13章 程序调试与常见错误分析,目 录,退出,第1章 程序设计与C语言,1.1 程序设计的基本概念 1.2 算法 1.3 结构化程序及设计步骤 1.4 C语言的特点 1.5 C语言程序的基本结构 1.6 C程序的上机操作,返回主目录,1.1 程序设计的基本概
2、念,1.1.1 程序电子计算机只是一种以二进制数据形式在内部存储信息、以程序存储为基础、由程序自动控制的电子设备。程序是一条条有序指令的集合。,第1章 程序设计与C语言,1.1.2 计算机语言程序设计语言是实现程序设计、以便人与计算机进行信息交流的必备工具,又称计算机语言。目前,社会上广泛使用的是高级语言,是一种接近人们习惯的程序设计语言,它使用人们所熟悉的文字、符号及数学表达式来编写程序,使程序的编写和操作都显得十分方便。,第1章 程序设计与C语言,由高级语言编写的程序称为“源程序”。在计算机内部,源程序必须翻译为机器能够接受的二进制代码所表示的“目标程序”(也称机器语言)。其中,具有这种翻
3、译功能的程序称为“编译程序”,如图1.1所示。,图1.1 源程序编译过程,第1章 程序设计与C语言,1.1.3 程序设计程序设计的一般步骤:1. 确定数据结构。2. 确定算法。3. 编程。4. 调试。5 整理源程序并总结资料。,第1章 程序设计与C语言,返回章目录,1.2 算法,所谓算法,是为解决某一特定的问题,所给出的一系列确切的、有限的操作步骤。1.2.1 算法设计程序实际上是用计算机语言所描述的算法。也就是说,依据算法所给定的步骤,用计算机语言所规定的表达形式去实现这些步骤,即为源程序。在算法设计中应遵循的准则: (1) 可执行性。(2) 确定性。(3) 有穷性。(4) 输入。(5) 输
4、出。,第1章 程序设计与C语言,1.2.2 算法的描述目前,对算法的描述,一般采用自然语言、一般流程图或N-S结构流程图。 常用一般流程图符号如图1.2所示。,图1.2 常用流程图符号,第1章 程序设计与C语言,返回章目录,1.3 结构化程序及设计步骤,1.3.1 结构化程序设计的概念 结构化程序由3种基本结构组成:顺序结构、选择结构、循环结构。使用这基本结构编写的程序,称为结构化程序。,第1章 程序设计与C语言,1. 顺序结构 程序中的语句按先后顺序逐条执行。,第1章 程序设计与C语言,2. 选择结构 在执行程序中的选择结构语句时,该语句的执行将根据不同的条件执行不同分支的语句。,图1.5
5、选择结构流程图(a) 一般流程图;(b) N-S结构流程图,(a) (b),第1章 程序设计与C语言,3. 循环结构在执行程序中的循环结构语句时,该语句将根据各自的条件,对循环结构所限定的语句(即循环体)重复执行多次或零次。循环结构又分为当型循环和直到型循环两种情况。1)当型循环该循环的特点是:当条件满足时,就执行循环体,否则就退出循环结构。,第1章 程序设计与C语言,图1.6 当型循环流程图(a)一般流程图;(b)N-S结构流程图,i=1, t=1,第1章 程序设计与C语言,(a),2) 直到型循环该循环的特点是:先执行循环体,再判断循环条件,条件不满足时,就退出循环结构。,图1.7 直到型
6、循环流程图(a)一般流程图; (b) N-S结构流程图,第1章 程序设计与C语言,1.3.2 结构化程序设计步骤 结构化程序设计步骤与前面一般程序设计步骤大体相同,其步骤如图1.8所示。,图1.8 结构化程序设计步骤框图,第1章 程序设计与C语言,返回章目录,1.4 C语言的特点,C语言主要特点如下:(1) C语言是一种模块化程序设计语言。 (2) 语言简洁,结构紧凑,程序书写方便、实用灵活。(3) 运算符丰富,数据处理能力强。(4) 数据类型丰富。(5) 具有结构化的控制语句。(6) 可移植性好。 (7) 用小写字母书写程序。(8) 使用方便,完好的集成开发环境。,第1章 程序设计与C语言,
7、返回章目录,1.5 C语言程序的基本结构,一个C语言程序至少包含一个主函数(main函数)或若干个其它函数。C语言程序结构有以下特点:(1) C语言是由函数组成的。程序必须包含一个main函数,也可包含若干个其它函数。程序的全部工作由函数来完成。(2) 程序总是从main( )函数开始执行。由main函数开始调用其它函数。其它函数间也可以相互调用,最终返回主函数结束程序。,第1章 程序设计与C语言,(3) 一个函数由两个组成部分。a. 函数的说明部分:确定函数名并说明函数类型、函数的形式参数名及其类型。b. 函数体:由函数说明部分下的第1对花括号 内的若干语句构成。(4) 程序书写较自由,一行
8、可写几条语句,一条语句也可以分行书写。(5) 分号是一条C语言的结束符。(6) 在每条C语句后,可用* *对该语句进行注解,以增加程序的可读性。,第1章 程序设计与C语言,返回章目录,1.6 C程序的上机操作,1.6.1 Turbo C的安装1.6.2 Turbo C的使用1. 启动Turbo C启动Turbo C应在DOS方式下执行如下命令:C: CDTC 回车C:TC TC 回车启动成功后,屏幕上将显示Turbo C的主菜单窗口。2. 选择用户文件的存放目录选择“File”菜单中的“Change dir”项后回车,弹出子目录提示框。在该提示框中输入用户文件的存放目录,输入完后按回车键即可。
9、,第1章 程序设计与C语言,3. 建立工作环境操作步骤如下:(1) 按F10键,选择“Option”菜单并按回车键。(2) 在“Option”子菜单中选择“Directories”选项并按回车键,将弹出子菜单。“Include directories”选项:说明标准包含文件的目录。 “Library directory”选项:说明Turbo C运行时库文件所在的目录。 “Output directory”选项:即编译、连接后的可执行文件所存放的目录。“Turbro C directory”选项:即Turbo C文件所在的目录。,第1章 程序设计与C语言,4. 编写源程序操作步骤如下:(1) 在
10、主菜单中选择“File”选项并按回车键。(2) 在“File”的下拉菜单中,选择“Load”选项,屏幕将出现一个提示框。用户输入要编辑的文件名并按回即可,将进入全屏幕编辑状态。,第1章 程序设计与C语言,5. 常用编辑键Insert键:控制工作状态是否为“插入状态”。Delete键:删除光标所在的字符。Ctrl+Y键:删除光标所在的一行。Ctrl+N键:插入一行。,第1章 程序设计与C语言,6. 编译、连接、运行(1) 对单一源程序文件进行编译、连接、运行。 操作步骤如下:a. 按F10键选择“Compile”选项。b. 选中“Make exe File”项,回车。c. 按Esc键回到主菜单,
11、选择“Run”菜单中的“Run”项,运行已生成的可执行文件。,第1章 程序设计与C语言,(2) 对两个以上源程序文件进行编译、连接、运行。利用Turbo C提供的“Project”菜单项,其功能可直接将两个以上的文件编译连接后生成一个完整的运行程序。操作步骤如下:a. 假设有两个文件组成一个程序,首先要生成两个源文件(如File1.c和File2.c)。b. 构造Project文件。c. 选择“Project”菜单中的“Project name”项,回车,输入Project文件名,按F9键产生相应的可执行文件。d. 停止编译的方式。 e. 运行。,第1章 程序设计与C语言,返回章目录,第2章
12、C语言程序设计初步知识,2.1 标识符、常量和变量 2.2 简单数据类型 2.3 基本运算表达式,返回主目录,2.1 标识符、常量和变量,2.1.1 标识符标识符是用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的有效字符序列。C语言规定:合法的标识符只能由字母、数字和下划线组成,第一个字符必须为字母或下划线。大写字母和小写字母被视为两个不同的字符。标识符的长度规定取前8个字符为有效字符。例如:sum、area、aver.PI、_above、L_1_2_3、S12 合法的标识符A.B.C、A.123、13、3area、a+b 不合法的标识符,第2章 C语言程序设计初步知识,1.
13、关键字标识符关键字又称为命令符,在程序中具有特定的含义,不能另作它用,其他字符又无法直接替代。2. 预定义标识符预定义标识符是指C语言提供的库函数名和预编译处理命令(如printf、scanf、define)等。,第2章 C语言程序设计初步知识,3. 用户标识符由用户根据需要自定义的标识符称为用户标识符。使用用户自定义标识符时,应注意:(1) 最好根据其含义选用英文缩写及汉语拼音作标识符,这样便于阅读程序。 (2) 不能与关键字相同。(3) 如果与预定义标识符相同系统并不报错,程序仍能运行,只是预定义标识符失去原来的含义,代之以用户确认的含义。,第2章 C语言程序设计初步知识,2.1.2 常量
14、和变量,1. 常量在程序运行过程中,其值不能被修改的固定量称为常量,C语言中有3种常量:(1) 算术型运算常量(如整型常量、实型常量等);(2) 字符型常量(如字符常量、字符串常量);(3) 标识符所定义的常量。,第2章 C语言程序设计初步知识,2. 变量程序运行过程中,其值可以改变的量叫变量;程序中使用的变量,属于用户自定义标识符,任何一个变量名必须先定义(即确定变量名和变量的类型)后使用。变量也有类型之分,常用的有整型变量、实型变量、字符型变量等。,第2章 C语言程序设计初步知识,返回章目录,2.2 简单数据类型,C语言中的数据类型,如图2.1所示。,图2.1 C语言中的数据类型,第2章
15、C语言程序设计初步知识,2.2.1 整型数据,1. 整型常量整型常量,即整型常数。C语言整型常量可用以下3种形式表示: (1) 十进制整型常数。(2) 八进制数。以0开头的数。(3) 十六进制整数。以0x开头的数为十六进制数。,第2章 C语言程序设计初步知识,2. 整型变量1) 整型变量的分类整型变量可分为以下4种整型类型:a. 基本型,以int表示;b. 短整型,以short表示;c. 长整型,以long表示;d. 无符号整型,以unsigned表示。,第2章 C语言程序设计初步知识,2) 整型变量的定义、使用变量必须先定义,后使用。定义整型变量的格式为:int i , j ; /* 定义i
16、 , j为整型变量 */ long e , f ; /* 定义e , f为长整型变量 */int a=3 , b=4 ; /* 定义a , b为整型变量同 时将3和4分别赋予a和b */3. 整型数据在内存中的存放形式在C语言中,一个整型数通常占用2个字节,低位在前一个字节,高位在后一个字节。,第2章 C语言程序设计初步知识,2.2.2 实型数据,1. 实型常量在C语言中实型表示实数的集合,实型常量又称实数。实型常量有两种表现形式。 1) 十进制数形式十进制数形式和数学中的实数形式类同,由数字和小数点组成,小数点是实数的标志。2) 指数形式实数的指数形式类似于数学中的指数形式。组成格式如下:数
17、字小数E整数 ( 内为可省项),第2章 C语言程序设计初步知识,2. 实型变量在C语言中实型变量分为单精度(float)和双精度(double)两类。实型变量的定义:float a , b ; /* 定义a , b为单精度实型变量 */double x , y ; /* 定义x , y为双精度实型变量 */,第2章 C语言程序设计初步知识,2.2.3 字符型数据,1. 字符型常量字符型常量(简称字符常量)是一个字符,在表示时由两个单引号括起来。例如A、a、+、2等。字符型常量在内存中占用一个字节,存放的是字符的ASCII码值,如字符A的值为65;B的值为66。所有字符常量还可作为整型量进行运算
18、,以及参与相应的各种操作。,第2章 C语言程序设计初步知识,2. 转义字符C语言中有一种特殊的字符常量转义字符,这类字符常量是以反斜杠字符“”开头的字符序列,它表示某个特定的ASCII码字符。在程序中,转义字符要放在一对单引号内。常用的转义字符及其含义:n 回车换行至下一行开头r 回车至本行开头 b 退格符 反斜杠字符 单引号字符,第2章 C语言程序设计初步知识,3. 字符变量字符变量用于存放一个字符常量。字符变量的定义格式为:char c1 , c2;其中c1和c2分别被定义为字符型变量。 一个字符型变量在内存中占一个字节,字符型变量可以参加任何整型运算。,第2章 C语言程序设计初步知识,返
19、回章目录,2.3 基本运算表达式,2.3.1 算术运算符及表达式1. 基本算术运算符基本算术运算符及特性,见表2-4。,第2章 C语言程序设计初步知识,表2-4 基本运算符列表,第2章 C语言程序设计初步知识,2. 算术表达式由算术运算符将操作数连接起来的有意义的式子称为算术表达式。例如2+a*b。使用运算符时,应注意:(1) 表达式本身的功能。(2) 操作数的个数。(3) 操作数的类型。(4) 运算符的优先级。(5) 结合性。(6) 任何一个表达式除了有其所实现的功能外,还有表达式其自身的值。,第2章 C语言程序设计初步知识,2.3.2 赋值运算符及表达式,1. 赋值运算符“=”符就是赋值运
20、算符,赋值运算符构成的表达式格式如下:变量名=表达式2. 复合赋值运算符在“=”前面加上双目运算符,如“+”、“-”、“*”、“%”、“/”即构成复合赋值运算符。例如:a+=3 等价于a=a+3所有复合赋值运算符级别相同,且与赋值运算符同一优先级,都具有右结合性。例如,设a的初值为10,则表达式a+=a-=a*=a等价于:a+=(a-=a*=a),第2章 C语言程序设计初步知识,2.3.3 不同类型数据间的转换,1. 数据类型自动转换数据类型的自动转换常发生在以下情况中:(1) 进行运算时转换。(2) 赋值转换。(3) 输出转换。(4) 函数调用转换。2. 不同类型数据间的混合运算整型、实型、
21、字符型数据可以进行混合运算。在进行运算时,应先把不同类型的数据转换为同一类型,然后进行运算,转换规则,参见图2.2所示。,第2章 C语言程序设计初步知识,图2.2 混合运算时不同类型数据间的转换,第2章 C语言程序设计初步知识,3. 赋值转换(1) 将整型数据赋给实型变量,这时数值不变,但以实型数据形式存到变量中。(2) 将实型数据赋给整型变量,这时舍弃小数部分,取整数部分赋给整型变量中。(3) 将int型整型数据赋给无符号型整型变量,int型数据按存储单元中实际二进制位的内容直接赋给unsigned型变量。若int型数据为正数,即存储单元中最高位为0,赋值后,则int型数据与unsigned
22、型数据的数值相同。若int型数据为负数,即存储单元中最高位为1,赋值后,unsigned型数据在使用时,最高位将代表一定的数值。,第2章 C语言程序设计初步知识,(4) 字符型数据赋给整型变量。字符型数据占1个字节,而整型变量占2个字节,因此赋值转换过程中,存在位的扩展。a. 对于unsigned型变量,字符型数据(8位)传送给unsigned变量的低8位,而unsigned变量的高8位只须补0;b. 对于int型变量,若字符型数据最高位为0,则int型变量高8位补0。若字符型数据最高位为1,则int型变量的高8位补1。这样可以保持数值不变。,第2章 C语言程序设计初步知识,4. 强制类型转换
23、在C语言中,可以利用强制类型转换符,将表达式的类型转换为所需类型。一般形式:(类型名)表达式例如: (int)a表示将a转换成int类型;,第2章 C语言程序设计初步知识,2.3.4 自增、自减运算符及表达式,1. 格式与功能格式:i+ i-功能:先使用i的值,然后,变量i的值增加(减少)1,即i=i1。格式:+i -i功能:变量i先增加(减少)1,即i=i1,然后,再使用i的值。,第2章 C语言程序设计初步知识,2. 自增、自减运算符的运算自增、自减运算为单目运算,其运算数据为单操作数,且操作数只能是变量,不能是常量或表达式。 3. 自增、自减运算符的结合性自增、自减运算符属右结合性。注意:
24、(1) 使用+i或i+单独构成语句时,其作用是等价的,均为i=i+1。(2) 运算对象只能是整型变量和实型变量。(3) 对于表达式(i+)+(i+)+(i+),不同的编程环境,其结果不同。,第2章 C语言程序设计初步知识,2.3.5 逗号运算符及表达式,用逗号将表达式连接起来的式子称为逗号表达式。1. 逗号表达式的一般形式表达式1 , 表达式2 , 表达式3 , 表达式n2. 逗号表达式的功能先计算表达式1,再计算表达式2,最后计算表达式n。最后一个表达式的值即为此逗号表达式的值。,第2章 C语言程序设计初步知识,3. 逗号运算符的优先级在所有运算符中,逗号运算符级别是最低的。利用逗号表达式可
25、实现在一条C语言中对多个变量赋予不同的值。,第2章 C语言程序设计初步知识,返回章目录,第3章 简单程序设计,3.1 顺序结构程序设计的概念 3.2 赋值语句 3.3 数据输出 3.4 数据输入 3.5 复合语句和空语句,返回主目录,3.1 顺序结构程序设计的概念顺序结构是一种线性结构,其特点是:在该结构中,各操作块(简称块,它所对应的计算机语言表述形式是程序段)按照各自出现的先后顺序,依次逐块执行。3.2 赋值语句赋值语句由赋值表达式加上一个分号构成。格式为:变量 =表达式;,第3章 简单程序设计,返回章目录,3.3 数据输出,在使用库函数中的输入输出函数时,要用编译预处理命令“#inclu
26、de”将有关的“头文件”包含到用户源程序中。例如,在使用标准输入输出库函数时,要用到“stdio.h”文件,因此要将此文件包含进来,文件开头应使用下面的编译预处理命令:# include 或# include “stdio.h“,第3章 简单程序设计,返回章目录,3.3.1 printf函数,1. printf函数的一般格式 printf函数的一般格式为:printf ( 格式控制 , 输出项1 , 输出项2 , ) 该函数按照指定的格式,将输出项列表中的各项输出到标准输出文件中。,第3章 简单程序设计,2. printf函数中格式控制说明每个格式控制说明必须用“%”开头,以一个格式控制字符结
27、束,在格式控制字符的前面还可以插入“宽度说明”、左对齐符号“-”、前导零符号“0”等附加字符。1) 格式控制字符常用的格式控制字符和它们的功能,见表3-1。使用时要注意区分大小写。,第3章 简单程序设计,表3-1 printf函数的格式控制字符,第3章 简单程序设计,2) 附加格式说明字符 为了使程序的输出结果更加整齐美观,可以在控制字符的前面加上附加格式说明字符,见表3-2。,表3-2 printf函数的附加格式说明符,第3章 简单程序设计,3.3.2 putchar函数,putchar函数的作用是向屏幕终端输出一个字符。格式为:putchar(ch) ;其中ch可以是字符型常量、变量或整型
28、变量。,第3章 简单程序设计,返回章目录,3.4 数据输入,3.4.1 scanf函数scanf函数的格式为:scanf(格式控制 , 地址1 , 地址2 , );3.4.2 getchar函数此函数的作用是从屏幕终端输入一个字符。getchar函数没有参数,其一般格式为:getchar( )当执行此函数调用语句时,变量将获得一个从标准设备上读取的字符代码值。,第3章 简单程序设计,返回章目录,3.5 复合语句和空语句,3.5.1 复合语句在C语言中,一对花括号“ ”不仅可用作函数体的开头和结尾的标志,也可用作复合语句的开头和结尾的标志;复合语句也可称为“语句块”,复合语句的语句格式为:语句1
29、 ; 语句2 ; ; 语句n ; 一个复合语句在语法上视为一条语句,在一对花括号中的语句数量不限。3.5.2 空语句C程序中的所有语句必须由一个分号“;”作为结束。如 果语句只有一个分号,就是空语句。程序执行空语句时不产生任何动作。,第3章 简单程序设计,返回章目录,第4章 选择结构程序设计,选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段。其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。,4.1 关系运算符及表达式 4.2 逻辑运算符及表达
30、式 4.3 条件运算符 4.4 单条件选择 if 语句 4.5 开关分支 switch 语句,第4章 选择结构程序设计,返回主目录,第4章 选择结构程序设计,4.1 关系运算符及表达式,关系表达式是由关系运算符连接表达式构成的。1. 关系运算符关系运算符都是双目运算符,共有如下6种:,=,y、(x=5)=y等。关系表达式的值是整数0或1,其中0代表逻辑假;1代表逻辑真。,第4章 选择结构程序设计,返回章目录,4.2 逻辑运算符及表达式,逻辑表达式是由逻辑运算符连接表达式构成的。1. 逻辑运算符C语言中提供了3种逻辑运算符:(1) 单目逻辑运算符:!(逻辑“非”)。 (2) 双目逻辑运算符:&(
31、逻辑“与”)。(3) 双目逻辑运算符:|(逻辑“或”)。其中逻辑“与”&的优先级大于逻辑“或”|,它们的优先级都小于逻辑“非”!。逻辑运算符具有自左至右的结合性。,第4章 选择结构程序设计,2. 逻辑表达式由逻辑运算符组成的表达式称为逻辑表达式。逻辑表达式的结果为1(结果为“真”时)或0(结果为“假“时)。表达式a和表达式b进行逻辑运算时,其运算规则,见表4-1。,第4章 选择结构程序设计,表4-1 逻辑运算的真值表,第4章 选择结构程序设计,3. 短路表达式在由 & 和 | 运算符组成的逻辑表达式中,只对能确定整个表达式值所需要的最少数目的子表达式进行计算。也就是说,当计算出一个子表达式的值
32、之后便可确定整个逻辑表达式的值时,后面的子表达式就不需要再计算了,整个表达式的值就是该子表达式的值。这种表达式也称为短路表达式。,第4章 选择结构程序设计,返回章目录,4.3 条件运算符,条件运算符是C语言中唯一的三目运算符,条件表达式的一般格式为:表达式1 ? 表达式2 : 表达式3条件运算符的执行过程是:先求解表达式1,当值为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值;否则求解表达式3,此时表达式3的值就作为整个条件表达式的值。条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符。条件运算符的结合性为自右至左。,第4章 选择结构程序设计,返回章目录,4
33、.4 单条件选择 if 语句,单条件选择结构的特点是:所给定的选择条件(它可以是逻辑表达式也可以是关系表达式)的值如果为真,则执行为真时的分支;如果为假则执行为假时的分支。,第4章 选择结构程序设计,4.4.1 if 语句,if 语句是根据所给定的条件决定执行的操作,是“二选一”的分支结构。If 语句的一般格式为:if (表达式)语句序列1;else语句序列2;,第4章 选择结构程序设计,4.4.2 if 语句的嵌套,条件分支嵌套就是在一个分支中可以嵌套另一个分支。单条件选择 if 语句完整的嵌套格式为:if(表达式1)if(表达式2) 语句序列1 ;else 语句序列2 ;elseif(表达
34、式3) 语句序列3 ;else 语句序列4 ;,第4章 选择结构程序设计,返回章目录,4.5 开关分支switch语句,C语言提供了switch多路选择语句。格式如下:switch(表达式)case 常量表达式1 : 语句组1 ;case 常量表达式2 : 语句组2 ; case 常量表达式n : 语句组n ;default : 语句组n+1 ;,第4章 选择结构程序设计,返回章目录,第5章 循环结构程序设计,5.1 循环结构程序设计的概念 5.2 while 语句 5.3 do while 语句 5.4 for 语句 5.5 循环结构嵌套 5.6 break 语句和 continue 语句
35、5.7 语句标号和 goto 语句,返回主目录,5.1 循环结构程序设计的概念,实现循环的程序结构称为循环结构,是计算机科学中用以描述客观世界循环现象的重要手段。程序设计中的循环(简称循环)是指在程序设计中,从某处开始有规律地反复执行某一操作块(或程序块)。如果循环永远不会终止,这样的循环就称为死循环。,第5章 循环结构程序设计,返回章目录,5.2 while语句,while语句用来实现“当型”循环结构。5.2.1 while语句的一般格式while语句是一个循环控制语句,用来控制程序段的重复执行。其一般格式为:while(表达式)循环体 ; 格式中的循环体,可以是单个语句、空语句,也可以是复
36、合语句。,第5章 循环结构程序设计,5.2.2 while语句的执行过程,当表达式为非0时,执行while语句中的循环体,然后继续进行表达式的判断,如此循环。当表达式为0时,则退出循环。说明:如果循环体包含一个以上的语句,就构成块语句,应该用花括号 括起来。,第5章 循环结构程序设计,返回章目录,5.3 do while语句,C语言中,用do while语句构成直到型循环结构。5.3.1 do while语句的一般格式do while语句也是一个循环控制语句。其特点是先执行循环体,然后判断条件是否成立。其一般格式为:do循环体while(表达式) ; 说明:循环体至少执行一次。当循环体有多个语
37、句时必须加花括号 。,第5章 循环结构程序设计,5.3.2 do while语句的执行过程,先执行一次指定的循环体语句,然后判断表达式。当表达式的值为非0的数据时,返回重新执行循环体,如此反复直到表达式的值为0为止,此时循环结束。,第5章 循环结构程序设计,返回章目录,5.4 for 语句,for语句可以用于循环次数已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况。5.4.1 for语句的一般格式for语句的一般格式为:for (表达式1 ; 表达式2 ; 表达式3)循环体,第5章 循环结构程序设计,5.4.2 for语句的执行过程,for语句的执行过程为:(1) 先求解表达式
38、1,表达式1只执行一次,一般是赋值语句,用于初始化变量。(2) 求解表达式2,若为假(0),则结束循环。(3) 当表达式2为真(非0)时,执行循环体。(4) 执行表达式3。(5) 转回(2)。,第5章 循环结构程序设计,返回章目录,5.5 循环结构嵌套,一个循环体内包含另一个完整的循环结构,称为循环的嵌套。循环之中还可以套循环,称为多层循环。三种循环(while循环、do while循环和for循环)可以互相嵌套。例如:while( )for ( ),第5章 循环结构程序设计,返回章目录,5.6 break语句和continue语句,5.6.1 break语句break语句可以用在循环语句和s
39、witch语句中。在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句。5.6.2 continue语句continue语句的作用是结束本次循环,忽略continue后面的语句,进行下一次循环判定。,第5章 循环结构程序设计,返回章目录,5.7 语句标号和goto语句,goto语句为无条件转向语句,它的一般格式为:goto 语句标号 ;,第5章 循环结构程序设计,返回章目录,第6章 数 组,6.1 数组和数组单元的基本概念 6.2 一维数组 6.3 二维数组 6.4 字符数组,返回主目录,6.1 数组和数组单元的基本概念,1. 数组将一组排列有序的、个数有限的变量作为一个
40、整体,用一个统一的名字来表示,则这些有序变量的全体称为数组;或者说,数组是用一个名字代表顺序排列的一组数,顺序号就是下标变量的值。,第6章 数 组,2. 数组单元在同一数组中,构成该数组的成员称为数组单元(或数组元素、下标变量)。C语言中,引用数组中的某一单元,要指出数组名和用括号括起来的数组单元在数组中的位置(顺序号)的下标。例如:a3 代表a数组中顺序号为3的那个单元。,第6章 数 组,3. 数组的维数下标变量中下标的个数称为数组的维数。具有一个下标的下标变量,构成一维数组。具有两个下标的下标变量,构成二维数组。依次类推,三个下标的下标变量,构成三维数组。有多少个下标的下标变量,就构成多少
41、维的数组。通常把二维以上的数组称为多维数组。,第6章 数 组,返回章目录,6.2 一维数组,用一个统一的标识符,即数组名来标识一组变量(也称元素),用下标来指示数组中元素的序号。当数组中每个元素只带有一个下标时,此数组称为一维数组。6.2.1 一维数组的定义、引用、初始化1. 一维数组的定义定义一维数组的格式为:类型标识符 数组名常量表达式 , ;,第6章 数 组,2. 一维数组的引用,使用数组必须先定义,后引用。引用时只能对数组元素引用,如a0,ai,ai+1等,而不能引用整个数组。在引用时应注意以下几点:(1) 由于数组元素本身等价于同一类型的一个变量,因此,对变量的任何操作都适用于数组元
42、素。(2) 在引用数组元素时,下标可以是整型常数或表达式,表达式内允许变量存在。在定义数组时下标不能使用变量。(3) 引用数组元素时下标最大值不能出界。,第6章 数 组,3. 一维数组的初始化前已述及,可利用赋值语句或输入语句给数组元素赋值。C语言还允许在定义数组时对各数组元素指定初始值称为数组初始化。(1) 数组初始化形式1例如:将括号内整型数据0,1,2,3,4分别赋给整型数组元素a0,a1,a2,a3,a4。可以写为下面的形式:int a5=0, 1, 2, 3, 4 ;,第6章 数 组,2) 数组初始化形式2例如:对a数组中所有元素赋初值0。可以写作下面的形式:int a 10=0 ;
43、 3) 通过赋初值定义数组大小例如: int a =1, 2, 3, 4, 5 ; 等价于:int a5=1, 2, 3, 4, 5 ;,第6章 数 组,6.2.2 一维数组程序示例,【例6-3】 从键盘输入20个整数,检查整数10是否包含在这些数据中,若是的话,它是第几个被输入的。程序如下:,第6章 数 组,# include “stdio.h“ main( ) int data20 , i ;for(i=0 ; i20 ; i+)scanf(“%d“ , ,第6章 数 组,程序运行结果为:输入:20 30 40 50 60 10 70 80 90 100 110 120 130 140 1
44、50 160 170 180 190 200输出:10 is input the position 6,第6章 数 组,【例6-4】输出字符串“welcome“。程序如下:main( )int i ;char str =w , e , l , c , o , m , e ;for(i=0 ; i7 ; i+) printf(“%c“ , stri) ;运行结果:welcome,第6章 数 组,返回章目录,6.3 二维数组,6.3.1 二维数组的定义、引用、初始化1. 二维数组的定义定义二维数组的一般格式为:类型说明符 数组名 常量表达式1常量表达式22. 二维数组元素的引用二维数组中各个元素可
45、看作具有相同数据类型的一组变量。因此,对变量的引用及一切操作,同样适用于二维数元素。二维数组元素引用的格式为:数组名下标下标,第6章 数 组,3. 二维数组的初始化在定义二维数组的同时,可使用以下几种方法对二维数组初始化。(1) 将所有数据写在一个大括号内,以逗号分隔,按数组元素在内存中的排列顺序对其赋值。例如:int a23=0 , 1 , 2 , 3 , 4 , 5 ; (2) 分行对数组元素赋值。例如:int a23=0 , 1 , 2 , 4 , 5 , 6 ;,第6章 数 组,(3) 对部分元素赋值。例如:int a23=1 , 4 ; (4) 若对全部元素赋初值,则定义时第一维长度
46、可缺省。可由第二维长度,即列的数据的个数自动确定第一维长度(即行的个数)。例如:int a 3=0 , 1 , 2 , 3 , 4 , 5 ;,第6章 数 组,6.3.2 二维数组应用示例,【例6-7】 有一个34矩阵,要求编写程序求出矩阵中所有元素中的最大值,并找出其所在的位置,即行号和列号。程序如下:# include “stdio.h“main( )int i , j , r , c , max ;int a34=1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 ;max=a00 ;,第6章 数 组,for(i=0 ; imax) max=
47、aij , r=i , c=j ; /* 用逗号表达式实现对max , r , c赋值 */printf(“max=%d,r=%d,c=%d“,max,r,c);运行结果为:max = 12 r = 3 c = 4,第6章 数 组,【例6-8】 某班有40个学生考5门课程,求每个学生的平均成绩并输出。程序如下:# define M 40# define N 5main( )int i , j ;float sMN , averM , sum ;for(i=0 ; iM ; i+)for(j=0 ; jN ; j+),第6章 数 组,scanf(“%f“ , ,第6章 数 组,返回章目录,6.4
48、 字符数组,字符数组是用来存放字符的数组,字符数组中的一个元素存放一个字符。6.4.1 字符数组的定义、引用、初始化对字符数组赋值或数组初始化时,数据使用字符型数据或相应的ASCII码值。 6.4.2 字符串与字符型数组 字符串(也称字符串常量)是用双引号括起来的若干有效字符序列。在C语言中,字符串可以包含字母、数字、转义字符等。,第6章 数 组,1. 使用字符串时的注意事项(1) C语言没有专门存放字符串的变量。(2) C语言中,系统自动地在每一个字符串的最后加入一个字符 0,作为字符串的结束标志。(3) C语言中,字符型数据是指单个字符(包含转义字符),在使用时用单引号括起来。而字符串是用双引号括起来的字符序列。,第6章 数 组,2. 字符数组的初始化(1) 可以在定义数组的同时对数组中的各个元素赋初值,例如:char c5=h , e , l , l , o ; (2) 可以在定义数组的同时将字符串赋给一个一维字符型数组。例如:char c6=“hello“ ;,第6章 数 组,6.4.3 字符数组的输入输出,