c语言程序设计案例教程.ppt_第1页
c语言程序设计案例教程.ppt_第2页
c语言程序设计案例教程.ppt_第3页
c语言程序设计案例教程.ppt_第4页
c语言程序设计案例教程.ppt_第5页
已阅读5页,还剩225页未读 继续免费阅读

下载本文档

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

文档简介

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、性。 (4) 输入。 (5) 输出。,第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. 选择结构 在执行程序中的选择结构语句时,该语句的执行将根据不同的条

5、件执行不同分支的语句。,图1.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) 直到型循环 该循环的特点是:先执行循环体,再判断循环条件,

6、条件不满足时,就退出循环结构。,图1.7 直到型循环流程图 (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

7、) 使用方便,完好的集成开发环境。,第1章 程序设计与C语言,返回章目录,1.5 C语言程序的基本结构,一个C语言程序至少包含一个主函数(main函数)或若干个其它函数。 C语言程序结构有以下特点: (1) C语言是由函数组成的。程序必须包含一个main函数,也可包含若干个其它函数。程序的全部工作由函数来完成。 (2) 程序总是从main( )函数开始执行。由main函数开始调用其它函数。其它函数间也可以相互调用,最终返回主函数结束程序。,第1章 程序设计与C语言,(3) 一个函数由两个组成部分。 a. 函数的说明部分:确定函数名并说明函数类型、函数的形式参数名及其类型。 b. 函数体:由函数

8、说明部分下的第1对花括号 内的若干语句构成。 (4) 程序书写较自由,一行可写几条语句,一条语句也可以分行书写。 (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

9、dir”项后回车,弹出子目录提示框。在该提示框中输入用户文件的存放目录,输入完后按回车键即可。,第1章 程序设计与C语言,3. 建立工作环境 操作步骤如下: (1) 按F10键,选择“Option”菜单并按回车键。 (2) 在“Option”子菜单中选择“Directories”选项并按回车键,将弹出子菜单。 “Include directories”选项:说明标准包含文件的目录。 “Library directory”选项:说明Turbo C运行时库文件所在的目录。 “Output directory”选项:即编译、连接后的可执行文件所存放的目录。 “Turbro C directory”选

10、项:即Turbo C文件所在的目录。,第1章 程序设计与C语言,4. 编写源程序 操作步骤如下: (1) 在主菜单中选择“File”选项并按回车键。 (2) 在“File”的下拉菜单中,选择“Load”选项,屏幕将出现一个提示框。 用户输入要编辑的文件名并按回即可,将进入全屏幕编辑状态。,第1章 程序设计与C语言,5. 常用编辑键 Insert键:控制工作状态是否为“插入状态”。 Delete键:删除光标所在的字符。 Ctrl+Y键:删除光标所在的一行。 Ctrl+N键:插入一行。,第1章 程序设计与C语言,6. 编译、连接、运行 (1) 对单一源程序文件进行编译、连接、运行。 操作步骤如下:

11、 a. 按F10键选择“Compile”选项。 b. 选中“Make exe File”项,回车。 c. 按Esc键回到主菜单,选择“Run”菜单中的“Run”项,运行已生成的可执行文件。,第1章 程序设计与C语言,(2) 对两个以上源程序文件进行编译、连接、运行。 利用Turbo C提供的“Project”菜单项,其功能可直接将两个以上的文件编译连接后生成一个完整的运行程序。 操作步骤如下: a. 假设有两个文件组成一个程序,首先要生成两个源文件(如File1.c和File2.c)。 b. 构造Project文件。 c. 选择“Project”菜单中的“Project name”项,回车,输

12、入Project文件名,按F9键产生相应的可执行文件。 d. 停止编译的方式。 e. 运行。,第1章 程序设计与C语言,返回章目录,第2章 C语言程序设计初步知识,2.1 标识符、常量和变量 2.2 简单数据类型 2.3 基本运算表达式,返回主目录,2.1 标识符、常量和变量,2.1.1 标识符 标识符是用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的有效字符序列。 C语言规定:合法的标识符只能由字母、数字和下划线组成,第一个字符必须为字母或下划线。大写字母和小写字母被视为两个不同的字符。标识符的长度规定取前8个字符为有效字符。例如: sum、area、aver.PI、_abo

13、ve、L_1_2_3、S12 合法的标识符 A.B.C、A.123、13、3area、a+b 不合法的标识符,第2章 C语言程序设计初步知识,1. 关键字标识符 关键字又称为命令符,在程序中具有特定的含义,不能另作它用,其他字符又无法直接替代。 2. 预定义标识符 预定义标识符是指C语言提供的库函数名和预编译处理命令(如printf、scanf、define)等。,第2章 C语言程序设计初步知识,3. 用户标识符 由用户根据需要自定义的标识符称为用户标识符。使用用户自定义标识符时,应注意: (1) 最好根据其含义选用英文缩写及汉语拼音作标识符,这样便于阅读程序。 (2) 不能与关键字相同。 (

14、3) 如果与预定义标识符相同系统并不报错,程序仍能运行,只是预定义标识符失去原来的含义,代之以用户确认的含义。,第2章 C语言程序设计初步知识,2.1.2 常量和变量,1. 常量 在程序运行过程中,其值不能被修改的固定量称为常量,C语言中有3种常量: (1) 算术型运算常量(如整型常量、实型常量等); (2) 字符型常量(如字符常量、字符串常量); (3) 标识符所定义的常量。,第2章 C语言程序设计初步知识,2. 变量 程序运行过程中,其值可以改变的量叫变量;程序中使用的变量,属于用户自定义标识符,任何一个变量名必须先定义(即确定变量名和变量的类型)后使用。 变量也有类型之分,常用的有整型变

15、量、实型变量、字符型变量等。,第2章 C语言程序设计初步知识,返回章目录,2.2 简单数据类型,C语言中的数据类型,如图2.1所示。,图2.1 C语言中的数据类型,第2章 C语言程序设计初步知识,2.2.1 整型数据,1. 整型常量 整型常量,即整型常数。C语言整型常量可用以下3种形式表示: (1) 十进制整型常数。 (2) 八进制数。以0开头的数。 (3) 十六进制整数。以0 x开头的数为十六进制数。,第2章 C语言程序设计初步知识,2. 整型变量 1) 整型变量的分类 整型变量可分为以下4种整型类型: a. 基本型,以int表示; b. 短整型,以short表示; c. 长整型,以long

16、表示; d. 无符号整型,以unsigned表示。,第2章 C语言程序设计初步知识,2) 整型变量的定义、使用 变量必须先定义,后使用。定义整型变量的格式为: int i , j ; /* 定义i , 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语言中实型表示实数的集合,实

17、型常量又称实数。实型常量有两种表现形式。 1) 十进制数形式 十进制数形式和数学中的实数形式类同,由数字和小数点组成,小数点是实数的标志。 2) 指数形式 实数的指数形式类似于数学中的指数形式。组成格式如下: 数字小数E整数 ( 内为可省项),第2章 C语言程序设计初步知识,2. 实型变量 在C语言中实型变量分为单精度(float)和双精度(double)两类。 实型变量的定义: float a , b ; /* 定义a , b为单精度实型变量 */ double x , y ; /* 定义x , y为双精度实型变量 */,第2章 C语言程序设计初步知识,2.2.3 字符型数据,1. 字符型常

18、量 字符型常量(简称字符常量)是一个字符,在表示时由两个单引号括起来。例如A、a、+、2等。 字符型常量在内存中占用一个字节,存放的是字符的ASCII码值,如字符A的值为65;B的值为66。所有字符常量还可作为整型量进行运算,以及参与相应的各种操作。,第2章 C语言程序设计初步知识,2. 转义字符 C语言中有一种特殊的字符常量转义字符,这类字符常量是以反斜杠字符“”开头的字符序列,它表示某个特定的ASCII码字符。在程序中,转义字符要放在一对单引号内。 常用的转义字符及其含义: n回车换行至下一行开头 r 回车至本行开头 b 退格符 反斜杠字符 单引号字符,第2章 C语言程序设计初步知识,3.

19、 字符变量 字符变量用于存放一个字符常量。字符变量的定义格式为: char c1 , c2; 其中c1和c2分别被定义为字符型变量。 一个字符型变量在内存中占一个字节,字符型变量可以参加任何整型运算。,第2章 C语言程序设计初步知识,返回章目录,2.3 基本运算表达式,2.3.1 算术运算符及表达式 1. 基本算术运算符 基本算术运算符及特性,见表2-4。,第2章 C语言程序设计初步知识,表2-4 基本运算符列表,第2章 C语言程序设计初步知识,2. 算术表达式 由算术运算符将操作数连接起来的有意义的式子称为算术表达式。例如2+a*b。 使用运算符时,应注意: (1) 表达式本身的功能。 (2

20、) 操作数的个数。 (3) 操作数的类型。 (4) 运算符的优先级。 (5) 结合性。 (6) 任何一个表达式除了有其所实现的功能外,还有表达式其自身的值。,第2章 C语言程序设计初步知识,2.3.2 赋值运算符及表达式,1. 赋值运算符 “=”符就是赋值运算符,赋值运算符构成的表达式格式如下: 变量名=表达式 2. 复合赋值运算符 在“=”前面加上双目运算符,如“+”、“-”、“*”、“%”、“/”即构成复合赋值运算符。 例如:a+=3 等价于a=a+3 所有复合赋值运算符级别相同,且与赋值运算符同一优先级,都具有右结合性。 例如,设a的初值为10,则表达式a+=a-=a*=a等价于:a+=

21、(a-=a*=a),第2章 C语言程序设计初步知识,2.3.3 不同类型数据间的转换,1. 数据类型自动转换 数据类型的自动转换常发生在以下情况中: (1) 进行运算时转换。 (2) 赋值转换。 (3) 输出转换。 (4) 函数调用转换。 2. 不同类型数据间的混合运算 整型、实型、字符型数据可以进行混合运算。在进行运算时,应先把不同类型的数据转换为同一类型,然后进行运算,转换规则,参见图2.2所示。,第2章 C语言程序设计初步知识,图2.2 混合运算时不同类型数据间的转换,第2章 C语言程序设计初步知识,3. 赋值转换 (1) 将整型数据赋给实型变量,这时数值不变,但以实型数据形式存到变量中

22、。 (2) 将实型数据赋给整型变量,这时舍弃小数部分,取整数部分赋给整型变量中。 (3) 将int型整型数据赋给无符号型整型变量,int型数据按存储单元中实际二进制位的内容直接赋给unsigned型变量。 若int型数据为正数,即存储单元中最高位为0,赋值后,则int型数据与unsigned型数据的数值相同。 若int型数据为负数,即存储单元中最高位为1,赋值后,unsigned型数据在使用时,最高位将代表一定的数值。,第2章 C语言程序设计初步知识,(4) 字符型数据赋给整型变量。 字符型数据占1个字节,而整型变量占2个字节,因此赋值转换过程中,存在位的扩展。 a. 对于unsigned型变

23、量,字符型数据(8位)传送给unsigned变量的低8位,而unsigned变量的高8位只须补0; b. 对于int型变量,若字符型数据最高位为0,则int型变量高8位补0。若字符型数据最高位为1,则int型变量的高8位补1。这样可以保持数值不变。,第2章 C语言程序设计初步知识,4. 强制类型转换 在C语言中,可以利用强制类型转换符,将表达式的类型转换为所需类型。 一般形式: (类型名)表达式 例如:(int)a表示将a转换成int类型;,第2章 C语言程序设计初步知识,2.3.4 自增、自减运算符及表达式,1. 格式与功能 格式: i+ i- 功能:先使用i的值,然后,变量i的值增加(减少

24、)1,即i=i1。 格式: +i -i 功能:变量i先增加(减少)1,即i=i1,然后,再使用i的值。,第2章 C语言程序设计初步知识,2. 自增、自减运算符的运算 自增、自减运算为单目运算,其运算数据为单操作数,且操作数只能是变量,不能是常量或表达式。 3. 自增、自减运算符的结合性 自增、自减运算符属右结合性。 注意: (1) 使用+i或i+单独构成语句时,其作用是等价的,均为i=i+1。 (2) 运算对象只能是整型变量和实型变量。 (3) 对于表达式(i+)+(i+)+(i+),不同的编程环境,其结果不同。,第2章 C语言程序设计初步知识,2.3.5 逗号运算符及表达式,用逗号将表达式连

25、接起来的式子称为逗号表达式。 1. 逗号表达式的一般形式 表达式1 , 表达式2 , 表达式3 , 表达式n 2. 逗号表达式的功能 先计算表达式1,再计算表达式2,最后计算表达式n。最后一个表达式的值即为此逗号表达式的值。,第2章 C语言程序设计初步知识,3. 逗号运算符的优先级 在所有运算符中,逗号运算符级别是最低的。 利用逗号表达式可实现在一条C语言中对多个变量赋予不同的值。,第2章 C语言程序设计初步知识,返回章目录,第3章 简单程序设计,3.1 顺序结构程序设计的概念 3.2 赋值语句 3.3 数据输出 3.4 数据输入 3.5 复合语句和空语句,返回主目录,3.1 顺序结构程序设计

26、的概念 顺序结构是一种线性结构,其特点是:在该结构中,各操作块(简称块,它所对应的计算机语言表述形式是程序段)按照各自出现的先后顺序,依次逐块执行。 3.2 赋值语句 赋值语句由赋值表达式加上一个分号构成。格式为: 变量 =表达式;,第3章 简单程序设计,返回章目录,3.3 数据输出,在使用库函数中的输入输出函数时,要用编译预处理命令“#include”将有关的“头文件”包含到用户源程序中。例如,在使用标准输入输出库函数时,要用到“stdio.h”文件,因此要将此文件包含进来,文件开头应使用下面的编译预处理命令: # include 或 # include stdio.h,第3章 简单程序设计

27、,返回章目录,3.3.1 printf函数,1. printf函数的一般格式 printf函数的一般格式为: printf ( 格式控制 , 输出项1 , 输出项2 , ) 该函数按照指定的格式,将输出项列表中的各项输出到标准输出文件中。,第3章 简单程序设计,2. printf函数中格式控制说明 每个格式控制说明必须用“%”开头,以一个格式控制字符结束,在格式控制字符的前面还可以插入“宽度说明”、左对齐符号“-”、前导零符号“0”等附加字符。 1) 格式控制字符 常用的格式控制字符和它们的功能,见表3-1。使用时要注意区分大小写。,第3章 简单程序设计,表3-1 printf函数的格式控制字

28、符,第3章 简单程序设计,2) 附加格式说明字符 为了使程序的输出结果更加整齐美观,可以在控制字符的前面加上附加格式说明字符,见表3-2。,表3-2 printf函数的附加格式说明符,第3章 简单程序设计,3.3.2 putchar函数,putchar函数的作用是向屏幕终端输出一个字符。格式为: putchar(ch) ; 其中ch可以是字符型常量、变量或整型变量。,第3章 简单程序设计,返回章目录,3.4 数据输入,3.4.1 scanf函数 scanf函数的格式为: scanf(格式控制 , 地址1 , 地址2 , ); 3.4.2 getchar函数 此函数的作用是从屏幕终端输入一个字符

29、。getchar函数没有参数,其一般格式为: getchar( ) 当执行此函数调用语句时,变量将获得一个从标准设备上读取的字符代码值。,第3章 简单程序设计,返回章目录,3.5 复合语句和空语句,3.5.1 复合语句 在C语言中,一对花括号“ ”不仅可用作函数体的开头和结尾的标志,也可用作复合语句的开头和结尾的标志;复合语句也可称为“语句块”,复合语句的语句格式为: 语句1 ; 语句2 ; ; 语句n ; 一个复合语句在语法上视为一条语句,在一对花括号中的语句数量不限。 3.5.2 空语句 C程序中的所有语句必须由一个分号“;”作为结束。如 果语句只有一个分号,就是空语句。程序执行空语句时不

30、产生任何动作。,第3章 简单程序设计,返回章目录,第4章 选择结构程序设计,选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段。其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。,4.1 关系运算符及表达式 4.2 逻辑运算符及表达式 4.3 条件运算符 4.4 单条件选择 if 语句 4.5 开关分支 switch 语句,第4章 选择结构程序设计,返回主目录,第4章 选择结构程序设计,4.1 关系运算符及表达式,关系表达式是由关系运算符连接表达

31、式构成的。 1. 关系运算符 关系运算符都是双目运算符,共有如下6种: ,=,y、(x=5)=y等。 关系表达式的值是整数0或1,其中0代表逻辑假;1代表逻辑真。,第4章 选择结构程序设计,返回章目录,4.2 逻辑运算符及表达式,逻辑表达式是由逻辑运算符连接表达式构成的。 1. 逻辑运算符 C语言中提供了3种逻辑运算符: (1) 单目逻辑运算符:!(逻辑“非”)。 (2) 双目逻辑运算符: else 语句序列2 ; else if(表达式3) 语句序列3 ; else 语句序列4 ;,第4章 选择结构程序设计,返回章目录,4.5 开关分支switch语句,C语言提供了switch多路选择语句。

32、格式如下: 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 语句 5.7 语句标号和 goto 语句,返回主目录,5.1 循环结构程序设计的概念,实现循环的程序结构称为循环结构,是计算机科学中用以描述客观世界循环现

33、象的重要手段。 程序设计中的循环(简称循环)是指在程序设计中,从某处开始有规律地反复执行某一操作块(或程序块)。如果循环永远不会终止,这样的循环就称为死循环。,第5章 循环结构程序设计,返回章目录,5.2 while语句,while语句用来实现“当型”循环结构。 5.2.1 while语句的一般格式 while语句是一个循环控制语句,用来控制程序段的重复执行。其一般格式为: while(表达式) 循环体 ; 格式中的循环体,可以是单个语句、空语句,也可以是复合语句。,第5章 循环结构程序设计,5.2.2 while语句的执行过程,当表达式为非0时,执行while语句中的循环体,然后继续进行表达

34、式的判断,如此循环。当表达式为0时,则退出循环。 说明:如果循环体包含一个以上的语句,就构成块语句,应该用花括号 括起来。,第5章 循环结构程序设计,返回章目录,5.3 do while语句,C语言中,用do while语句构成直到型循环结构。 5.3.1 do while语句的一般格式 do while语句也是一个循环控制语句。其特点是先执行循环体,然后判断条件是否成立。其一般格式为: do 循环体 while(表达式) ; 说明:循环体至少执行一次。当循环体有多个语句时必须加花括号 。,第5章 循环结构程序设计,5.3.2 do while语句的执行过程,先执行一次指定的循环体语句,然后判

35、断表达式。当表达式的值为非0的数据时,返回重新执行循环体,如此反复直到表达式的值为0为止,此时循环结束。,第5章 循环结构程序设计,返回章目录,5.4 for 语句,for语句可以用于循环次数已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况。 5.4.1 for语句的一般格式 for语句的一般格式为: for (表达式1 ; 表达式2 ; 表达式3) 循环体,第5章 循环结构程序设计,5.4.2 for语句的执行过程,for语句的执行过程为: (1) 先求解表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量。 (2) 求解表达式2,若为假(0),则结束循环。 (3)

36、当表达式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语句可以用在循环语句和switch语句中。在循环语句中用来结束内部循环;在switch语句中用来跳出switch语句。 5.

37、6.2 continue语句 continue语句的作用是结束本次循环,忽略continue后面的语句,进行下一次循环判定。,第5章 循环结构程序设计,返回章目录,5.7 语句标号和goto语句,goto语句为无条件转向语句,它的一般格式为: goto 语句标号 ;,第5章 循环结构程序设计,返回章目录,第6章 数 组,6.1 数组和数组单元的基本概念 6.2 一维数组 6.3 二维数组 6.4 字符数组,返回主目录,6.1 数组和数组单元的基本概念,1. 数组 将一组排列有序的、个数有限的变量作为一个整体,用一个统一的名字来表示,则这些有序变量的全体称为数组;或者说,数组是用一个名字代表顺序

38、排列的一组数,顺序号就是下标变量的值。,第6章 数 组,2. 数组单元 在同一数组中,构成该数组的成员称为数组单元(或数组元素、下标变量)。C语言中,引用数组中的某一单元,要指出数组名和用括号括起来的数组单元在数组中的位置(顺序号)的下标。例如: a3 代表a数组中顺序号为3的那个单元。,第6章 数 组,3. 数组的维数 下标变量中下标的个数称为数组的维数。 具有一个下标的下标变量,构成一维数组。 具有两个下标的下标变量,构成二维数组。 依次类推,三个下标的下标变量,构成三维数组。有多少个下标的下标变量,就构成多少维的数组。通常把二维以上的数组称为多维数组。,第6章 数 组,返回章目录,6.2

39、 一维数组,用一个统一的标识符,即数组名来标识一组变量(也称元素),用下标来指示数组中元素的序号。当数组中每个元素只带有一个下标时,此数组称为一维数组。 6.2.1 一维数组的定义、引用、初始化 1. 一维数组的定义 定义一维数组的格式为: 类型标识符 数组名常量表达式 , ;,第6章 数 组,2. 一维数组的引用,使用数组必须先定义,后引用。 引用时只能对数组元素引用,如a0,ai,ai+1等,而不能引用整个数组。 在引用时应注意以下几点: (1) 由于数组元素本身等价于同一类型的一个变量,因此,对变量的任何操作都适用于数组元素。 (2) 在引用数组元素时,下标可以是整型常数或表达式,表达式

40、内允许变量存在。在定义数组时下标不能使用变量。 (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 ; 3) 通过赋初值定义数组大小 例如: int a

41、 =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 150 160 170 180 190 200 输出

42、: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常量表达式2 2. 二维数组元素的引用 二维数组中各个元素可看作具有相同数据类型的一组变量。因此

43、,对变量的引用及一切操作,同样适用于二维数元素。 二维数组元素引用的格式为: 数组名下标下标,第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) 若对全部元素赋初值,则定义时第一维长度可缺省。可由第二维长度

44、,即列的数据的个数自动确定第一维长度(即行的个数)。 例如: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=aij , r

45、=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 5 main() int i , j ; float sMN , averM , sum ; for(i=0 ; iM ; i+) for(j=0 ; jN ; j+),第6章 数 组,scanf(%f , ,第6章 数 组,返回章目录,6.4

46、字符数组,字符数组是用来存放字符的数组,字符数组中的一个元素存放一个字符。 6.4.1 字符数组的定义、引用、初始化 对字符数组赋值或数组初始化时,数据使用字符型数据或相应的ASCII码值。 6.4.2 字符串与字符型数组 字符串(也称字符串常量)是用双引号括起来的若干有效字符序列。在C语言中,字符串可以包含字母、数字、转义字符等。,第6章 数 组,1. 使用字符串时的注意事项 (1) C语言没有专门存放字符串的变量。 (2) C语言中,系统自动地在每一个字符串的最后加入一个字符 0,作为字符串的结束标志。 (3) C语言中,字符型数据是指单个字符(包含转义字符),在使用时用单引号括起来。而字

47、符串是用双引号括起来的字符序列。,第6章 数 组,2. 字符数组的初始化 (1) 可以在定义数组的同时对数组中的各个元素赋初值,例如: char c5=h , e , l , l , o ; (2) 可以在定义数组的同时将字符串赋给一个一维字符型数组。 例如: char c6=hello ;,第6章 数 组,6.4.3 字符数组的输入输出,可以利用字符数组对单个字符和字符串进行输入输出操作。 1. 逐个字符输入输出 用格式符%c输入或输出一个字符。 2. 字符串整串输入和输出 用%s格式符可输入、输出字符串。由于C语言中没有专门存放字符串的变量,字符串存放在一个字符型数组中,数组名表示第一个字

48、符的首地址,故在输入或输出字符串时可直接使用数组名。,第6章 数 组,6.4.4 字符串处理函数,1. 字符串输入、输出函数 1) 输入一个字符串函数gets( ) gets函数一般调用格式为: gets(str) ; gets函数的作用是从终端键盘输入字符串(字符串可以包括空格),直到遇到回车符为止,回车符读入后,不作为字符串的内容,系统将自动用0代替,作为字符串的结束标志。,第6章 数 组,2) 输出一个字符串函数puts( ) puts( )函数的一般调用格式为: puts(str) ; 该函数的作用是从str指定的地址开始,依次输出存储单元中的字符,直到遇到字符串结束标志第1个 0 字

49、符为止。,第6章 数 组,2. 字符串处理函数 1) 字符串复制函数strcpy( ) strcpy( )函数一般调用格式为: strcpy(str1 , str2) 功能:把str2所指向的字符串复制到str1所指的字符数组中。 2) 字符串连接函数strcat( ) strcat( )函数一般调用格式为: strcat(str1 , str2) ; 功能:将str2所指的字符串连接到str1所指的字符串的后面,并自动覆盖str1所指的字符串的尾部字符 0。,第6章 数 组,3) 求字符串长度函数strlen( ) strlen( )函数一般调用格式为: strlen(str) ; 功能:计

50、算str为起始地址的字符串的长度(不包含字符串结束标志0),并作为函数值返回。,第6章 数 组,4) 字符串比较函数strcmp( ) strcmp( )函数一般调用格式为: strcmp(str1 , str2) ; 功能:比较str1和str2所指向的两个字符串,并产生以下结果: str1与str2相等时,函数值为0。 str1str2时,函数值大于0。 str1str2时,函数值小于0。 字符串之间比较的方法是:从第一个字符开始,依次对str1与str2对应位置上的字符按ASCII码值的大小进行比较,直到出现第一个不相同的字符时,即由这两个字符的大小决定所在串的大小。,第6章 数 组,6

51、.4.5 字符串数组应用举例,例6-17】 从终端键盘输入一字符串,并复制到另一字符数组后显示出来。 程序如下: # include stdio.h main() char str130 , str230 ; int i ; printf(input a string:) ; scanf(%s , str1) ; i=0 ;,第6章 数 组,while(str1i!=0) str2i=str1i ; i+ ; str2i=0 ; printf(%s , str2) ; 运行结果: input a string : ABC ABC,第6章 数 组,【例6-18】 由终端键盘输入一字符串,要求从该

52、串中删去一字符。 main() char str150 , str250 ; char ch ; int i=0 , k=0 ; gets(str1) ; printf( n delete?) ; scanf(%c , ,第6章 数 组,for(i=0 ; str1i !=0 ; i+) if(str1i!=ch) str2i-k=str1i ; else k=k+1 ; str2i-k=0 ; printf(n%sn , str2) ; 该程序运行后,从键盘输入字符串: I am a boy 回车 屏幕显示:delete? 输入:a 输出为:I m boy,第6章 数 组,返回章目录,第7章

53、 函 数,7.1 模块化程序设计的概念 7.2 库函数 7.3 函数的定义和调用 7.4 函数的返回值及其类型 7.5 函数调用时参数间的传递 7.6 函数的嵌套调用 7.7 函数的递归调用 7.8 局部变量和全局变量 7.9 静态存储变量和动态存储变量 7.10 内部函数和外部函数 7.11 程序举例,返回主目录,7.1 模块化程序设计的概念,模块化程序设计,是将一个大型程序按照其功能分解成若干个相对独立的功能模块,然后再分别进行设计,最后把这些功能模块按照层次关系进行组装。基本思想是“自顶向下、逐步求精”。 C语言程序是一个函数式的程序结构,即C语言程序的全部功能都是由函数实现的,而每个函

54、数对应一个独立的模块,通过函数间调用来实现程序的总体功能。如图7.1所示,是一个程序中函数调用示意图。,第7章 函 数,在C语言中,函数分为主函数、库函数、用户自定义函数三种。程序的执行由主函数开始,然后调用其它函数,最终返回主函数结束。,图7.1 函数调用示意图,第7章 函 数,返回章目录,7.2 库函数,C语言提供了丰富的标准函数,即库函数。 7.2.1 C语言常用库函数 1) 数学函数 调用数学库函数时,要求程序在调用数学库函数前应包含下面的头文件: # include ma,第7章 函 数,2) 字符函数和字符串函数 调用字符函数时,要求程序在调用字符函数前应包含下面的头文件: # i

55、nclude ctype.h 调用字符串函数时,要求在源文件中应包含下面的头文件: # include string.h,第7章 函 数,3) 输入输出函数 调用输入输出函数时,要求在源文件中应包含下面的头文件: # include stdio.h 4) 动态分配函数和随机函数 调用动态分配函数和随机函数时,要求在源文件中应包含下面的头文件: # include stdlib.h,第7章 函 数,7.2.2 标准库函数的调用,前面讲到,调用C语言标准库函数时必须在源程序中用include命令。 include命令的格式是: # include 或 # include 头文件名,第7章 函 数,返回章目录,7.3 函数的定义和调用,由用户编写的函数称为自定义函数。 7.3.1 函数的定义

温馨提示

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

评论

0/150

提交评论