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

下载本文档

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

文档简介

1、语言程序设计实例教程语言程序设计实例教程中国高等职业技术教育研究会推荐中国高等职业技术教育研究会推荐高高 职职 系系 列列 教教 材材 西安电子科技大学出版社出版h t t p : / / w w w . x d u p h . c o m 第1章 程序设计与C语言 第2章 C语言程序设计初步知识 第3章 简单程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 数 组 第7章 函 数 第8章 指 针 第9章 编译预处理 第10章 结构体和共用体 第11章 位运算 第12章 文 件 第13章 程序调试与常见错误分析目录退出退出第1章 程序设计与C语言 1.1 程序设计的基本概念

2、 1.2 算法 1.3 结构化程序及设计步骤 1.4 C语言的特点 1.5 C语言程序的基本结构 1.6 C程序的上机操作 返回主目录 1.1 程序设计的基本概念 电子计算机只是一种以二进制数据形式在内部存储信息、以程序存储为基础、由程序自动控制的电子设备。 程序是一条条有序指令的集合。第1章 程序设计与C语言 程序设计语言是实现程序设计、以便人与计算机进行信息交流的必备工具,又称计算机语言。目前,社会上广泛使用的是高级语言,是一种接近人们习惯的程序设计语言,它使用人们所熟悉的文字、符号及数学表达式来编写程序,使程序的编写和操作都显得十分方便。第1章 程序设计与C语言 由高级语言编写的程序称为

3、“源程序”。在计算机内部,源程序必须翻译为机器能够接受的二进制代码所表示的“目标程序”(也称机器语言)。其中,具有这种翻译功能的程序称为“编译程序”,如图1.1所示。 源程序编译程序目标程序图1.1 源程序编译过程第1章 程序设计与C语言 程序设计的一般步骤: 1. 确定数据结构。 2. 确定算法。 3. 编程。 4. 调试。 5 整理源程序并总结资料。第1章 程序设计与C语言 返回章目录 1.2 算法算法 所谓算法,是为解决某一特定的问题,所给出的一系列确切的、有限的操作步骤。 程序实际上是用计算机语言所描述的算法。也就是说,依据算法所给定的步骤,用计算机语言所规定的表达形式去实现这些步骤,

4、即为源程序。 在算法设计中应遵循的准则: (1) 可执行性。 (2) 确定性。 (3) 有穷性。 (4) 输入。 (5) 输出。第1章 程序设计与C语言 目前,对算法的描述,一般采用自然语言、一般流程图或N-S结构流程图。 常用一般流程图符号如图1.2所示。 处理框 输入输出框 判断框 流程线图1.2 常用流程图符号第1章 程序设计与C语言 返回章目录 1.3 结构化程序及设计步骤结构化程序及设计步骤 结构化程序由3种基本结构组成:顺序结构、选择结构、循环结构。使用这基本结构编写的程序,称为结构化程序。第1章 程序设计与C语言 1. 顺序结构 程序中的语句按先后顺序逐条执行。s=a+b输出输出

5、b=4a=3a=3b=4s=a+b输出输出s图1.4 顺序结构流程图(a)一般流程图;(b)N-S结构流程图 (a) (b)第1章 程序设计与C语言 2. 选择结构 在执行程序中的选择结构语句时,该语句的执行将根据不同的条件执行不同分支的语句。 图1.5 选择结构流程图 (a) 一般流程图;(b) N-S结构流程图 abmax=amax=b输出输出maxnoyesab yes no max=a max=b(a) (b) 第1章 程序设计与C语言 3. 循环结构 在执行程序中的循环结构语句时,该语句将根据各自的条件,对循环结构所限定的语句(即循环体)重复执行多次或零次。 循环结构又分为当型循环和

6、直到型循环两种情况。 1)当型循环 该循环的特点是:当条件满足时,就执行循环体,否则就退出循环结构。 第1章 程序设计与C语言 图1.6 当型循环流程图 (a)一般流程图;(b)N-S结构流程图 i=1, t=1第1章 程序设计与C语言 (a)i=n?输出输出ti=1, t=1输入输入n循环体循环体t=t* *ii=i+1noyes循环条件循环条件i=n 循环体循环体t=t*i i=i+1 输出输出t(b) 2) 直到型循环直到型循环 该循环的特点是:先执行循环体,再判断循环条件,条件不满足时,就退出循环结构。 图1.7 直到型循环流程图 (a)一般流程图; (b) N-S结构流程图 i=1,

7、t=1输入输入n循环体循环体t=t* *ii=i+1i=n?输出输出tyesnoi=1,t=1循环体循环体t=t* *ii=i+1循环条件循环条件 i CDTC 回车 C:TC TC 回车 启动成功后,屏幕上将显示Turbo C的主菜单窗口。 2. 选择用户文件的存放目录 选择“File”菜单中的“Change dir”项后回车,弹出子目录提示框。在该提示框中输入用户文件的存放目录,输入完后按回车键即可。 第1章 程序设计与C语言 3. 建立工作环境 操作步骤如下: (1) 按F10键,选择“Option”菜单并按回车键。 (2) 在“Option”子菜单中选择“Directories”选项并

8、按回车键,将弹出子菜单。 “Include directories”选项:说明标准包含文件的目录。 “Library directory”选项:说明Turbo C运行时库文件所在的目录。 “Output directory”选项:即编译、连接后的可执行文件所存放的目录。 “Turbro C directory”选项:即Turbo C文件所在的目录。第1章 程序设计与C语言 4. 编写源程序 操作步骤如下: (1) 在主菜单中选择“File”选项并按回车键。 (2) 在“File”的下拉菜单中,选择“Load”选项,屏幕将出现一个提示框。 用户输入要编辑的文件名并按回即可,将进入全屏幕编辑状态。

9、第1章 程序设计与C语言 5. 常用编辑键 Insert键:控制工作状态是否为“插入状态”。 Delete键:删除光标所在的字符。 Ctrl+Y键:删除光标所在的一行。 Ctrl+N键:插入一行。第1章 程序设计与C语言 6. 编译、连接、运行 (1) 对单一源程序文件进行编译、连接、运行。 操作步骤如下: a. 按F10键选择“Compile”选项。 b. 选中“Make exe File”项,回车。 c. 按Esc键回到主菜单,选择“Run”菜单中的“Run”项,运行已生成的可执行文件。第1章 程序设计与C语言 (2) 对两个以上源程序文件进行编译、连接、运行。 利用Turbo C提供的“

10、Project”菜单项,其功能可直接将两个以上的文件编译连接后生成一个完整的运行程序。 操作步骤如下: b. 构造Project文件。 c. 选择“Project”菜单中的“Project name”项,回车,输入Project文件名,按F9键产生相应的可执行文件。 d. 停止编译的方式。 e. 运行。第1章 程序设计与C语言 返回章目录第第2章章 C语言程序设计初步知识语言程序设计初步知识 2.1 标识符、常量和变量 2.2 简单数据类型 2.3 基本运算表达式 返回主目录 2.1 标识符、常量和变量标识符、常量和变量 标识符是用来标识变量名、符号常量名、函数名、文件名以及一些具有专门含义的

11、有效字符序列。 C语言规定:合法的标识符只能由字母、数字和下划线组成,第一个字符必须为字母或下划线。大写字母和小写字母被视为两个不同的字符。标识符的长度规定取前8个字符为有效字符。例如:sum、area、aver.PI、_above、L_1_2_3、S12 合法的标识符第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 关键字标识符 关键字又称为命令符,在程序中具有特定的含义,不能另作它用,其他字符又无法直接替代。 2. 预定义标识符 预定义标识符是指C语言提供的库函数名和预编译处理命令(如printf、scanf、define)等。第2章 C C语言程序设计初步知识语言程序设计初步

12、知识 3. 用户标识符 由用户根据需要自定义的标识符称为用户标识符。使用用户自定义标识符时,应注意: (1) 最好根据其含义选用英文缩写及汉语拼音作标识符,这样便于阅读程序。 (2) 不能与关键字相同。 (3) 如果与预定义标识符相同系统并不报错,程序仍能运行,只是预定义标识符失去原来的含义,代之以用户确认的含义。 第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 常量 在程序运行过程中,其值不能被修改的固定量称为常量,C语言中有3种常量: (1) 算术型运算常量(如整型常量、实型常量等); (2) 字符型常量(如字符常量、字符串常量); (3) 标识符所定义的常量。第2章 C C

13、语言程序设计初步知识语言程序设计初步知识 2. 变量 程序运行过程中,其值可以改变的量叫变量;程序中使用的变量,属于用户自定义标识符,任何一个变量名必须先定义(即确定变量名和变量的类型)后使用。 变量也有类型之分,常用的有整型变量、实型变量、字符型变量等。 第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录2.2 简单数据类型简单数据类型 C语言中的数据类型,如图2.1所示。 图2.1 C语言中的数据类型 无符号型(无符号型(unsigned)长整型(长整型(long)短整型(短整型(short)整型(整型(int)单精度型(单精度型(float)双精度型(双精度型(doubl

14、e)整型整型文件类型(文件类型(file)字符串类型字符串类型数据类型数据类型指针类型指针类型空类型空类型基本类型基本类型(简单类型)(简单类型)数值类型数值类型字符型(字符型(char)构造类型构造类型数组类型数组类型结构体类型(结构体类型(struct)共用体类型(共用体类型(union)实型实型枚举类型(枚举类型(enum)第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 整型常量 整型常量,即整型常数。C语言整型常量可用以下3种形式表示: (1) 十进制整型常数。 (2) 八进制数。以0开头的数。 (3) 十六进制整数。以0 x开头的数为十六进制数。 第2章 C C语言程序

15、设计初步知识语言程序设计初步知识 2. 整型变量 1) 整型变量的分类 整型变量可分为以下4种整型类型: a. 基本型,以int表示; b. 短整型,以short表示; c. 长整型,以long表示; d. 无符号整型,以unsigned表示。 第2章 C C语言程序设计初步知识语言程序设计初步知识 2) 整型变量的定义、使用 变量必须先定义,后使用。定义整型变量的格式为: int i , j ; /* 定义i , j为整型变量 */ long e , f ; /* 定义e , f为长整型变量 */ int a=3 , b=4 ; /* 定义a , b为整型变量同 时将3和4分别赋予a和b *

16、/ 3. 整型数据在内存中的存放形式 在C语言中,一个整型数通常占用2个字节,低位在前一个字节,高位在后一个字节。 第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 实型常量 在C语言中实型表示实数的集合,实型常量又称实数。实型常量有两种表现形式。 1) 十进制数形式 十进制数形式和数学中的实数形式类同,由数字和小数点组成,小数点是实数的标志。 2) 指数形式 实数的指数形式类似于数学中的指数形式。组成格式如下: 数字小数E整数 ( 内为可省项)项)第2章 C C语言程序设计初步知识语言程序设计初步知识 2. 实型变量 在C语言中实型变量分为单精度(float)和双精度(doubl

17、e)两类。 实型变量的定义: float a , b ; /* 定义a , b为单精度实型变量 */ double x , y ; /* 定义x , y为双精度实型变量 */第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 字符型常量 字符型常量(简称字符常量)是一个字符,在表示时由两个单引号括起来。例如A、a、+、2等。 字符型常量在内存中占用一个字节,存放的是字符的ASCII码值,如字符A的值为65;B的值为66。所有字符常量还可作为整型量进行运算,以及参与相应的各种操作。 第2章 C C语言程序设计初步知识语言程序设计初步知识 2. 转义字符 C语言中有一种特殊的字符常量转义

18、字符,这类字符常量是以反斜杠字符“”开头的字符序列,它表示某个特定的ASCII码字符。在程序中,转义字符要放在一对单引号内。 常用的转义字符及其含义: n回车换行至下一行开头 r 回车至本行开头 b 退格符 反斜杠字符 单引号字符第2章 C C语言程序设计初步知识语言程序设计初步知识 3. 字符变量 字符变量用于存放一个字符常量。字符变量的定义格式为: char c1 , c2; 其中c1和c2分别被定义为字符型变量。 一个字符型变量在内存中占一个字节,字符型变量可以参加任何整型运算。 第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录2.3 基本运算表达式基本运算表达式 1.

19、 基本算术运算符 基本算术运算符及特性,见表2-4。 第2章 C C语言程序设计初步知识语言程序设计初步知识 表2-4 基本运算符列表 运算符运算符功能功能操作数个数操作数个数结合方向结合方向优先级优先级+-求正求正求负求负单目单目单目单目自右至左自右至左自右至左自右至左高高 低低*/%乘法乘法除法除法求余求余双目双目双目双目双目双目自左至右自左至右自左至右自左至右自左至右自左至右+-加法加法减法减法双目双目双目双目自左至右自左至右自左至右自左至右第2章 C C语言程序设计初步知识语言程序设计初步知识 2. 算术表达式 由算术运算符将操作数连接起来的有意义的式子称为算术表达式。例如2+a*b。

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

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

22、lelongunsignedintchar,shortfloat高高低低第2章 C C语言程序设计初步知识语言程序设计初步知识 3. 赋值转换赋值转换 (1) 将整型数据赋给实型变量,这时数值不变,但以实型数据形式存到变量中。 (2) 将实型数据赋给整型变量,这时舍弃小数部分,取整数部分赋给整型变量中。 (3) 将int型整型数据赋给无符号型整型变量,int型数据按存储单元中实际二进制位的内容直接赋给unsigned型变量。 若int型数据为正数,即存储单元中最高位为0,赋值后,则int型数据与unsigned型数据的数值相同。 若int型数据为负数,即存储单元中最高位为1,赋值后,unsig

23、ned型数据在使用时,最高位将代表一定的数值。第2章 C C语言程序设计初步知识语言程序设计初步知识 (4) 字符型数据赋给整型变量。 字符型数据占1个字节,而整型变量占2个字节,因此赋值转换过程中,存在位的扩展。 a. 对于unsigned型变量,字符型数据(8位)传送给unsigned变量的低8位,而unsigned变量的高8位只须补0; b. 对于int型变量,若字符型数据最高位为0,则int型变量高8位补0。若字符型数据最高位为1,则int型变量的高8位补1。这样可以保持数值不变。 第2章 C C语言程序设计初步知识语言程序设计初步知识 4. 强制类型转换强制类型转换 在C语言中,可以

24、利用强制类型转换符,将表达式的类型转换为所需类型。 一般形式: (类型名类型名)表达式表达式 例如: (int)a表示将a转换成int类型; 第2章 C C语言程序设计初步知识语言程序设计初步知识 1. 格式与功能格式与功能 格式: i+ i- 功能:先使用i的值,然后,变量i的值增加(减少)1,即i=i1。 格式: +i -i 功能:变量i先增加(减少)1,即i=i1,然后,再使用i的值。 第2章 C C语言程序设计初步知识语言程序设计初步知识 2. 自增、自减运算符的运算自增、自减运算符的运算 自增、自减运算为单目运算,其运算数据为单操作数,且操作数只能是变量,不能是常量或表达式。 3.

25、自增、自减运算符的结合性自增、自减运算符的结合性 自增、自减运算符属右结合性。 注意: (1) 使用+i或i+单独构成语句时,其作用是等价的,均为i=i+1。 (2) 运算对象只能是整型变量和实型变量。 (3) 对于表达式(i+)+(i+)+(i+),不同的编程环境,其结果不同。第2章 C C语言程序设计初步知识语言程序设计初步知识 用逗号将表达式连接起来的式子称为逗号表达式。 1. 逗号表达式的一般形式逗号表达式的一般形式 表达式表达式1 , 表达式表达式2 , 表达式表达式3 , 表达式表达式n 2. 逗号表达式的功能逗号表达式的功能 先计算表达式1,再计算表达式2,最后计算表达式n。最后

26、一个表达式的值即为此逗号表达式的值。 第2章 C C语言程序设计初步知识语言程序设计初步知识 3. 逗号运算符的优先级逗号运算符的优先级 在所有运算符中,逗号运算符级别是最低的。 利用逗号表达式可实现在一条C语言中对多个变量赋予不同的值。第2章 C C语言程序设计初步知识语言程序设计初步知识 返回章目录第第3章章 简单程序设计简单程序设计 3.1 顺序结构程序设计的概念 3.2 赋值语句 3.3 数据输出 3.4 数据输入 3.5 复合语句和空语句返回主目录 3.1 顺序结构程序设计的概念顺序结构程序设计的概念 顺序结构是一种线性结构,其特点是:在该结构中,各操作块(简称块,它所对应的计算机语

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

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

29、式 控 制 字格 式 控 制 字符符 说说 明明d , i输出带符号的十进制整型数(正数不输出符号)输出带符号的十进制整型数(正数不输出符号)o输出无符号八进制整型数输出无符号八进制整型数x 或或 X输出无符号十六进制整型数(用输出无符号十六进制整型数(用x时输出时输出af,用,用X时输出时输出AF)u输出无符号十进制整型数输出无符号十进制整型数c输出一个字符输出一个字符s输出字符串输出字符串f以小数形式输出浮点数(隐含输出以小数形式输出浮点数(隐含输出6位小数)位小数)e 或或 E以指数形式输出浮点数,数字部分小数位数隐含输出以指数形式输出浮点数,数字部分小数位数隐含输出6位。位。g 或或

30、G选用选用%f和和%e格式中输出宽度较短的一种格式格式中输出宽度较短的一种格式p输出变量或数组的地址输出变量或数组的地址第3章 简单程序设计简单程序设计 2) 附加格式说明字符附加格式说明字符 为了使程序的输出结果更加整齐美观,可以在控制字符的前面加上附加格式说明字符,见表3-2。 表3-2 printf函数的附加格式说明符 字字 符符 说说 明明字母字母l用于长整型数据,可加在格式控制符用于长整型数据,可加在格式控制符d、o、x、u的前面的前面m(正整数)(正整数)数据最小宽度数据最小宽度n(正整数)(正整数)对于浮点数,表示输出对于浮点数,表示输出n位小数;对于字符串,表示截取的位小数;对

31、于字符串,表示截取的字符个数;对于整数,指定必须输出的数字个数,若输出的字符个数;对于整数,指定必须输出的数字个数,若输出的数字少于指定的个数,则前面补数字少于指定的个数,则前面补0,否则按原样输出,否则按原样输出-输出的数字或字符向左对齐输出的数字或字符向左对齐+输出的结果总是带有输出的结果总是带有+号或号或-号号0 在输出数据前加在输出数据前加0第3章 简单程序设计简单程序设计 putchar函数的作用是向屏幕终端输出一个字符。格式为: putchar(ch) ; 其中ch可以是字符型常量、变量或整型变量。 第3章 简单程序设计简单程序设计返回章目录3.4 数据输入 scanf函数的格式为

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

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

34、主目录 第4章 选择结构程序设计4.1 关系运算符及表达式 关系表达式是由关系运算符连接表达式构成的。 1. 关系运算符关系运算符 关系运算符都是双目运算符,共有如下6种: ,=,y、(x=5)=y等。 关系表达式的值是整数0或1,其中0代表逻辑假;1代表逻辑真。第4章 选择结构程序设计返回章目录4.2 逻辑运算符及表达式 逻辑表达式是由逻辑运算符连接表达式构成的。 1. 逻辑运算符逻辑运算符 C语言中提供了3种逻辑运算符: (1) 单目逻辑运算符:!(逻辑“非”)。 (2) 双目逻辑运算符:&(逻辑“与”)。 (3) 双目逻辑运算符:|(逻辑“或”)。 其中逻辑“与”&的优先

35、级大于逻辑“或”|,它们的优先级都小于逻辑“非”!。逻辑运算符具有自左至右的结合性。 第4章 选择结构程序设计 2. 逻辑表达式逻辑表达式 由逻辑运算符组成的表达式称为逻辑表达式。 逻辑表达式的结果为1(结果为“真”时)或0(结果为“假“时)。 表达式a和表达式b进行逻辑运算时,其运算规则,见表4-1。 第4章 选择结构程序设计表4-1 逻辑运算的真值表 ab!a!ba & ba | b非0非00011非0001010非01001001100第4章 选择结构程序设计 3. 短路表达式短路表达式 在由 & 和 | 运算符组成的逻辑表达式中,只对能确定整个表达式值所需要的最少数目的

36、子表达式进行计算。也就是说,当计算出一个子表达式的值之后便可确定整个逻辑表达式的值时,后面的子表达式就不需要再计算了,整个表达式的值就是该子表达式的值。这种表达式也称为短路表达式。 第4章 选择结构程序设计返回章目录4.3 条件运算符 条件运算符是C语言中唯一的三目运算符,条件表达式的一般格式为: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3 条件运算符的执行过程是:先求解表达式1,当值为非0(真),则求解表达式2,此时表达式2的值就作为整个条件表达式的值;否则求解表达式3,此时表达式3的值就作为整个条件表达式的值。 条件运算符的优先级高于赋值运算符,但是低于关系运算符和算术运算符。

37、条件运算符的结合性为自右至左。 第4章 选择结构程序设计返回章目录4.4 单条件选择 if 语句 单条件选择结构的特点是:所给定的选择条件(它可以是逻辑表达式也可以是关系表达式)的值如果为真,则执行为真时的分支;如果为假则执行为假时的分支。 第4章 选择结构程序设计 if 语句是根据所给定的条件决定执行的操作,是“二选一”的分支结构。If 语句的一般格式为: if (表达式表达式) 语句序列语句序列1; else 语句序列语句序列2; 第4章 选择结构程序设计 条件分支嵌套就是在一个分支中可以嵌套另一个分支。 单条件选择 if 语句完整的嵌套格式为: if(表达式表达式1) if(表达式表达式

38、2) 语句序列语句序列1 ; else 语句序列语句序列2 ; else if(表达式表达式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 循环结构程序

39、设计的概念 5.2 while 语句 5.3 do while 语句 5.4 for 语句 5.5 循环结构嵌套 5.6 break 语句和 continue 语句 5.7 语句标号和 goto 语句 返回主目录 5.1 循环结构程序设计的概念 实现循环的程序结构称为循环结构,是计算机科学中用以描述客观世界循环现象的重要手段。 程序设计中的循环(简称循环)是指在程序设计中,从某处开始有规律地反复执行某一操作块(或程序块)。如果循环永远不会终止,这样的循环就称为死循环。 第5章 循环结构程序设计 返回章目录5.2 while语句 while语句用来实现“当型”循环结构。 while语句是一个循环

40、控制语句,用来控制程序段的重复执行。其一般格式为: while(表达式表达式) 循环体循环体 ; 格式中的循环体,可以是单个语句、空语句,也可以是复合语句。 第5章 循环结构程序设计 当表达式为非0时,执行while语句中的循环体,然后继续进行表达式的判断,如此循环。当表达式为0时,则退出循环。 说明:如果循环体包含一个以上的语句,就构成块语句,应该用花括号 括起来。 第5章 循环结构程序设计 返回章目录5.3 do while语句 C语言中,用do while语句构成直到型循环结构。 do while语句也是一个循环控制语句。其特点是先执行循环体,然后判断条件是否成立。其一般格式为: do

41、循环体循环体 while(表达式表达式) ; 说明:循环体至少执行一次。当循环体有多个语句时必须加花括号 。 第5章 循环结构程序设计 先执行一次指定的循环体语句,然后判断表达式。当表达式的值为非0的数据时,返回重新执行循环体,如此反复直到表达式的值为0为止,此时循环结束。第5章 循环结构程序设计 返回章目录5.4 for 语句 for语句可以用于循环次数已经确定的情况,还可用于循环次数不确定而只给出循环结束条件的情况。 for语句的一般格式为: for (表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循环体循环体 第5章 循环结构程序设计 for语句的执行过程为: (1) 先求解

42、表达式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语句 break语句可以用在循环语句和switch语句

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

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

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

46、作都适用于数组元素。 (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 例如

47、:对a数组中所有元素赋初值0。可以写作下面的形式: int a 10=0 ; 3) 通过赋初值定义数组大小通过赋初值定义数组大小 例如: int a =1, 2, 3, 4, 5 ; 等价于:int a5=1, 2, 3, 4, 5 ;第6章 数 组 【例6-3】 从键盘输入20个整数,检查整数10是否包含在这些数据中,若是的话,它是第几个被输入的。 程序如下:第6章 数 组 # include stdio.hmain() int data20 , i ; for(i=0 ; i20 ; i+) scanf(%d , &datai) ; for(i=0 ; i20 ; i+) if(d

48、atai=10) printf(10 is input the postion %d n , i+1) ; break ; 第6章 数 组 程序运行结果为: 输入:20 30 40 50 60 10 70 80 90 100 110 120 130 140 150 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 ,

49、stri) ; 运行结果:welcome 第6章 数 组 返回章目录6.3 二维数组 1. 二维数组的定义 定义二维数组的一般格式为: 类型说明符类型说明符 数组名数组名 常量表达式常量表达式1常量表达式常量表达式2 2. 二维数组元素的引用 二维数组中各个元素可看作具有相同数据类型的一组变量。因此,对变量的引用及一切操作,同样适用于二维数元素。 二维数组元素引用的格式为: 数组名数组名下标下标下标下标第6章 数 组 3. 二维数组的初始化 在定义二维数组的同时,可使用以下几种方法对二维数组初始化。 (1) 将所有数据写在一个大括号内,以逗号分隔,按数组元素在内存中的排列顺序对其赋值。 例如:

50、int a23=0 , 1 , 2 , 3 , 4 , 5 ; (2) 分行对数组元素赋值。 例如:int a23=0 , 1 , 2 , 4 , 5 , 6 ; 第6章 数 组 (3) 对部分元素赋值。 例如:int a23=1 , 4 ; (4) 若对全部元素赋初值,则定义时第一维长度可缺省。可由第二维长度,即列的数据的个数自动确定第一维长度(即行的个数)。 例如:int a 3=0 , 1 , 2 , 3 , 4 , 5 ;第6章 数 组 【例6-7】 有一个34矩阵,要求编写程序求出矩阵中所有元素中的最大值,并找出其所在的位置,即行号和列号。 程序如下: # include stdio

51、.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 ; i3 ; i+) for(j=0 ; jmax) max=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门课程,求每个学生的平均成绩

52、并输出。 程序如下: # 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 , &sij) ; /* 由键盘输入40个学生5门课的成绩 */ for(i=0 ; iM ; i+) sum=0.0 ; for(j=0 ; jN ; j+) sum+=sij ; averi=sum/N ; for(i=0 ; iM ; i+) printf (aver%d=%fn , i ,averi) ; 第

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

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

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

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

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

58、-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】 由终端键盘输入一字符串,要求从该串中删去一字符。 main() cha

59、r str150 , str250 ; char ch ; int i=0 , k=0 ; gets(str1) ; printf( n delete?) ; scanf(%c , &ch) ;第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章 函 数 7.1 模块

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

温馨提示

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

评论

0/150

提交评论