C程序设计演示稿(1-8)课件_第1页
C程序设计演示稿(1-8)课件_第2页
C程序设计演示稿(1-8)课件_第3页
C程序设计演示稿(1-8)课件_第4页
C程序设计演示稿(1-8)课件_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计演示稿(1-8)C程序设计演示稿(1-8)第第1章章C语言概述语言概述 “高级语言高级语言” 汇编语言:优点:可以充分发挥机器硬件的功汇编语言:优点:可以充分发挥机器硬件的功能,并提高质量。缺点:必须熟悉机器的指令系统,能,并提高质量。缺点:必须熟悉机器的指令系统,而指令系统又是和具体机器的内部结构密切相关的,而指令系统又是和具体机器的内部结构密切相关的,所以所编写的程序依赖于计算机硬件,可读性和可所以所编写的程序依赖于计算机硬件,可读性和可移植性比较差。移植性比较差。 一般高级语言:优点:可读性和可移植性比较一般高级语言:优点:可读性和可移植性比较好。缺点:难以对硬件进行操作,如内

2、存地址、位好。缺点:难以对硬件进行操作,如内存地址、位操作等。操作等。 1.1 1.1 介绍介绍 :C程序设计演示稿(1-8)C语言:具有一般高级语言的特性,也具有汇编语言:具有一般高级语言的特性,也具有汇编语言的优点,所以有人称为语言的优点,所以有人称为“中级语言中级语言”高级语言有的:高级语言没有的:高级语言有的:高级语言没有的: 算术运算算术运算关系运算关系运算逻辑运算逻辑运算 位运算位运算单目、三目运算单目、三目运算复合运算复合运算 C程序设计演示稿(1-8)1、语言简洁、紧凑,使用方便、灵活。、语言简洁、紧凑,使用方便、灵活。32个关键个关键字、字、9种控制语句。种控制语句。 2、运

3、算符丰富、运算符丰富34种运算符种运算符 3、数据类型和数据结构丰富。、数据类型和数据结构丰富。基本类型(整型、字符型、实型)基本类型(整型、字符型、实型)构造类型(数组、结构体、共用体)构造类型(数组、结构体、共用体)指针、文件、空类型指针、文件、空类型 数据结构(链、表、树、栈等)数据结构(链、表、树、栈等)1.2 C1.2 C语言的特点语言的特点C程序设计演示稿(1-8)4、具有结构化控制语句、具有结构化控制语句5、语法不严格松散结构,即语法检查不严格,编、语法不严格松散结构,即语法检查不严格,编程时必须控制好。程时必须控制好。6、C语言允许直接访问物理地址,能进行位操作。语言允许直接访

4、问物理地址,能进行位操作。7、目标代码质量高,程序执行效率高。、目标代码质量高,程序执行效率高。8、输入输出采用函数而无输入输出语句,可移植、输入输出采用函数而无输入输出语句,可移植性好性好C程序设计演示稿(1-8)1.3 用用C库函数组装程序库函数组装程序 用库函数必须注意包含相应的头文件用库函数必须注意包含相应的头文件 #include #include #include #include #include #include C程序设计演示稿(1-8)1.4 程序格式和特点程序格式和特点1 1、main()main()函数必须有且唯一函数必须有且唯一 2、函数是、函数是C语言程序的基本单位

5、语言程序的基本单位3、大小写敏感、大小写敏感4 4、无行概念、无行概念(1 1)、语句以分号结束)、语句以分号结束 (2)、以号开头的编译预处理语句无分号)、以号开头的编译预处理语句无分号(3)、)、/*/加在加在C语言任何部分作注释说明语言任何部分作注释说明采用小写,大写有特殊意义(宏,常量等)采用小写,大写有特殊意义(宏,常量等)C程序设计演示稿(1-8)1.5 程序执行从程序执行从mainmain函数开始函数开始Turbo C 是一个集成环境,编辑、编译、连接、是一个集成环境,编辑、编译、连接、执行。执行。1、源程序扩展名、源程序扩展名.c2、Turbo C 的使用的使用 TC选择工作目

6、录建立工作环境建立工选择工作目录建立工作环境建立工作环境作环境F9编译、连接。运行编译、连接。运行Alt+R.3、建立工作环境、建立工作环境C程序设计演示稿(1-8)例题例例题例1例例3讲解、说明讲解、说明C程序设计演示稿(1-8)上机题:上机题:1、建立一个自己的工作环境、建立一个自己的工作环境2、熟悉、熟悉Turbo C环境环境3、输入并调试运行例、输入并调试运行例1-例例34、自己编写、自己编写C程序习题程序习题1.5、1.6C程序设计演示稿(1-8)第第2章数据描述和基本操作章数据描述和基本操作 程序程序 2.1 C2.1 C的数据类型的数据类型 :对数据的描述对数据的描述 (数据结构

7、)(数据结构) 对操作的描述对操作的描述 (算法)(算法) 1、不同的数据占用的空间不同、不同的数据占用的空间不同2、对应的运算不同、对应的运算不同数据类型(数据类型(P38P38)C程序设计演示稿(1-8)2.2 2.2 基本数据类型基本数据类型 :1、整型、整型 shout 2字节字节int机器字长机器字长(2字节)字节) -215(215-1)long 4字节字节2、无符号类型、无符号类型只对整型;也包含字符型只对整型;也包含字符型,存放正数的范围扩大一倍存放正数的范围扩大一倍Unsigned Unsigned 整型整型x;x;C程序设计演示稿(1-8)2.2 2.2 基本数据类型基本数

8、据类型 :3、实型、实型 float 单精度单精度 4字节字节double双精度双精度8字节字节long double 长双精度长双精度16字节字节C程序设计演示稿(1-8)2.2 2.2 基本数据类型基本数据类型 :4、字符型、字符型存贮形式,按存贮形式,按ASCII码值码值;占一字节占一字节;与整型通用与整型通用,相当一个字节整数。相当一个字节整数。 C程序设计演示稿(1-8)2.2 2.2 基本数据类型基本数据类型 :5、类型长度运算符、类型长度运算符sizeof(类型类型 )用途:测试动态分配存贮空间用途:测试动态分配存贮空间 例如例如Asizeof(int); C程序设计演示稿(1-

9、8)2.3 2.3 常量和变量常量和变量 :1、常量、常量(1)、数值常量)、数值常量整型常量整型常量实型常量实型常量十进制十进制 自然表示自然表示八进制零打头八进制零打头十六进制十六进制ox打头打头指数形式指数形式E(e)前面有数,后前面有数,后面是整数面是整数小数形式小数形式 .必须有必须有“.”C程序设计演示稿(1-8)(2)、字符型常量)、字符型常量用单引号包围的单一字符用单引号包围的单一字符a A字符常量没有结束标志字符常量没有结束标志(3)、字符串型常量)、字符串型常量用双引号包围的用双引号包围的0个或多个字符序列个或多个字符序列“china” 有结束标志有结束标志C程序设计演示稿

10、(1-8)(4)、特殊常量)、特殊常量(一)符号常量如:宏定义(一)符号常量如:宏定义#define PI 3.14(二)转义(二)转义字符字符(换码序列)(换码序列)字母表示动作字母表示动作 见见P(48)C程序设计演示稿(1-8)2、变量、变量(1)、变量的定义)、变量的定义int x,y;先定义先定义每个变量被指定为一确定类型每个变量被指定为一确定类型便于编译系统检查如便于编译系统检查如a%bC程序设计演示稿(1-8)(2)、变量标识符)、变量标识符C语言规定标识符只能由字母、数字和语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必下划线三种字符组成,且第一个字符必须是字

11、母或下划线。须是字母或下划线。用来标识变量名、符号常量名、函数名、数组名、用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。类型名、文件名的有效字符序列。保留关键字保留关键字预定义标识符预定义标识符用户自定义用户自定义C程序设计演示稿(1-8)(3)、变量的初始化)、变量的初始化定义变量的同时给变量赋值定义变量的同时给变量赋值如:如: int x=3,y=5;C程序设计演示稿(1-8)2.4 2.4 表达式运算表达式运算 :1、说明、说明例如例如表达式表达式b=(a=x)*5运算符的功能运算符的功能与运算量的关系与运算量的关系优先级优先级结合方向结合方向结果类型结果类型

12、C程序设计演示稿(1-8)2、算术运算符双目运算符、算术运算符双目运算符5%3=2 -5%3=? 5%-3=?、/、(模运算符或求余运算符)、(模运算符或求余运算符)a%b 这里这里a、b必须是整型数必须是整型数5/3=1 -5/3=-1(-2)舍入的方向不因定,舍入的方向不因定,“向零取整原向零取整原则则”符号同左边的操作数符号同左边的操作数C程序设计演示稿(1-8)3、算术表达式、算术表达式用算术运算符和括号将运算对象(也称操作数)用算术运算符和括号将运算对象(也称操作数)连接起来,符合连接起来,符合C语法规则的式子称语法规则的式子称C算术表达式。算术表达式。如:如:a*b/c-1.5+a

13、同级时同级时“从左到右从左到右”的结合原则的结合原则C程序设计演示稿(1-8)4、复合的赋值运算、复合的赋值运算+=、-=、*=、/=、%=、=、&=、=、|=只要有赋值号优先级较低,只比逗号运算符高只要有赋值号优先级较低,只比逗号运算符高如:如:a+=b a=a+b 累加器,注意累加器,注意a一定是变量一定是变量b可可以是表达式或变量,结合规律从右到左以是表达式或变量,结合规律从右到左A+=3 a=a+3X*=y+8 x=x*(y+8)C程序设计演示稿(1-8)5、自增减运算、自增减运算+、-a+ , +a 自增自增a=a+1a- , -a 自减自减a=a-1后置运算、前置运算后置运算、前置

14、运算只能用于变量,不能用于常量或表达式;结合方向只能用于变量,不能用于常量或表达式;结合方向是从右至左是从右至左C程序设计演示稿(1-8)6、关系运算、关系运算 =!=If(x=y) 真(非真(非0为真)假(为真)假(0为假)为假)C程序设计演示稿(1-8)7、逻辑运算、逻辑运算(与)(或)!(非)(与)(或)!(非)(1)实型数不比较相等的)实型数不比较相等的1.0/3.0*3.0=1.0 x=-y就是小到一定形式就行了就是小到一定形式就行了 10106 6或或10108 8C程序设计演示稿(1-8)e1?e2:e3 (e为表达式)8、条件运算(三目)、条件运算(三目)33,68逗号表达式,

15、又称顺序求值运算符逗号表达式,又称顺序求值运算符9、逗号运算符和逗号表达式、逗号运算符和逗号表达式C程序设计演示稿(1-8)2.5 2.5 类型转换类型转换 :1、隐式转换、隐式转换(1)必然转换必然转换(2)由低向高转换,一次到位转换由低向高转换,一次到位转换P54(3)赋值转换赋值转换2、显示转换、显示转换强制类型运算(类型)强制类型运算(类型)C程序设计演示稿(1-8)第第3章简单的章简单的C程序设计程序设计 顺序结构顺序结构3.1 C3.1 C语句语句 :1、表达式语句、表达式语句2、控制语句、控制语句3、函数调用语句、函数调用语句4、空语句、空语句5、复合语句、复合语句C程序设计演示

16、稿(1-8)3.2 3.2 格式化输入输出函数格式化输入输出函数 :(一)、格式输出(一)、格式输出Printf(“格式控制格式控制”,输出项序列);,输出项序列);(二)、格式输入(二)、格式输入scanf(“格式控制格式控制”,地址序列);,地址序列);C程序设计演示稿(1-8)3.3 3.3 字符输入输出函数字符输入输出函数 :(一)、输入字符(一)、输入字符getchar()(二)、输出一个字符(二)、输出一个字符Putchar(c);C程序设计演示稿(1-8)3.4 3.4 顺序结构程序设计举例顺序结构程序设计举例C程序设计演示稿(1-8)第第4章逻辑运算和判断选取控章逻辑运算和判断

17、选取控制制4.1 4.1 条件分支条件分支 :1、if语句的三种形式语句的三种形式(1)、)、if(表达式)语句表达式)语句(2)、)、if(表达式)表达式) 语句语句1; else 语句语句2;(3) if(表达式表达式1) 语句语句1; else if(表达式表达式2)语句)语句2; else if(表达式表达式3)语句)语句3; C程序设计演示稿(1-8)if语句的说明:语句的说明:(1)表达式一般为逻辑表达式或关系表达式,但)表达式一般为逻辑表达式或关系表达式,但可以是任意表达式,是任意的数值类型(整型、实可以是任意表达式,是任意的数值类型(整型、实型、字符型、指针型数据)型、字符型、

18、指针型数据)(2)else 前面的分号不可缺少,它是前面的分号不可缺少,它是if语句内嵌语句内嵌语句所要求的,缺少时语法错误。语句所要求的,缺少时语法错误。(3) if和和else后面可以是一个操作语句,也可以后面可以是一个操作语句,也可以是多个操作语句,若为多个语句必须用复合语句。是多个操作语句,若为多个语句必须用复合语句。C程序设计演示稿(1-8)2、if语句的嵌套:语句的嵌套: if语句中又包含一个或多个语句中又包含一个或多个if语句。语句。if(表达式(表达式1) if(表达式(表达式2)语句)语句1; else 语句语句2;else if(表达式(表达式3)语句)语句3; else

19、语句语句4;C程序设计演示稿(1-8)3、条件运算符:、条件运算符: 在在if语句中执行一个赋值语句且给同一个变量。语句中执行一个赋值语句且给同一个变量。(1)条件运算符条件运算符 ? :(2)条件运算符优先于赋值运算符,低于关系运算符条件运算符优先于赋值运算符,低于关系运算符和算术运算符。和算术运算符。(3)条件运算符的结合方向条件运算符的结合方向“从右至左从右至左”(4)条件运算符不能取代一般的条件运算符不能取代一般的if语句语句(5)表达式表达式1的类型可以与表达式的类型可以与表达式2和表达式和表达式3的类型的类型不同。不同。C程序设计演示稿(1-8)4.2 4.2 开关分支开关分支sw

20、itchswitch语句语句 :是多分支选择语句是多分支选择语句格式:格式:Switch(表达式)表达式) case 判断值判断值1:语句组:语句组1;break; case 判断值判断值2:语句组:语句组2;break; default :语句组:语句组n;break;C程序设计演示稿(1-8)switch语句的说明:语句的说明:(1) switch后面的表达式应是整型、字符型或是后面的表达式应是整型、字符型或是枚举。枚举。(2)若表达式的值与某个)若表达式的值与某个case后面的判断值相等后面的判断值相等时就执行时就执行case后面的语句组,没有匹配值时执行后面的语句组,没有匹配值时执行d

21、efault后面的语句组。后面的语句组。(3) case后面的判断值不能重复。后面的判断值不能重复。(4)case和和 default出现的次序不影响执行结果。出现的次序不影响执行结果。(5)执行完一个)执行完一个case后面的语句,则转到下一个后面的语句,则转到下一个case继续执行,所以必须用继续执行,所以必须用break语句跳出。语句跳出。C程序设计演示稿(1-8)第第5章循环控制章循环控制5.1 5.1 循环结构循环结构 :循环结构是结构化程序设计的三种基本结构之一循环结构是结构化程序设计的三种基本结构之一(1)当型循环结构,当条件成立时反复执行操作,)当型循环结构,当条件成立时反复执

22、行操作,直到条件为假时才停止循环。直到条件为假时才停止循环。(2)直到型循环结构:先执行操作,再判断条件)直到型循环结构:先执行操作,再判断条件是否为假,若条件为假,再执行。如此反复,直到是否为假,若条件为假,再执行。如此反复,直到条件为真为止。条件为真为止。C程序设计演示稿(1-8)5.2 C5.2 C语言中循环语句语言中循环语句 :1.while2.for3.do while当型循环,先判断后执行当型循环,先判断后执行直到型循环,先执行后判断直到型循环,先执行后判断1.while和和do while语句语句(1)while(条件)(条件) 语句;语句; 如:如: 1001iisC程序设计演

23、示稿(1-8)1.while和和do while语句语句(2)do 语句;语句; while(条件)(条件);如:如: 1001iis需要注意需要注意: (1)循环前的初始值)循环前的初始值 (2)循环体内必须改变循环条件,使其趋于结束)循环体内必须改变循环条件,使其趋于结束 (3)循环体如果包含一个以上语句,应以复合语句出现)循环体如果包含一个以上语句,应以复合语句出现 (4)当)当while后面的表达式第一次值为真时,二者等价,后面的表达式第一次值为真时,二者等价,否则二者不同。否则二者不同。循环次数不确定,只给结束条件。循环次数不确定,只给结束条件。C程序设计演示稿(1-8)2.for语

24、句语句“灵活灵活”循环次数确定或不确定(只给结束条件)循环次数确定或不确定(只给结束条件)for(初值表达式;条件;修正表达式)初值表达式;条件;修正表达式) 语句;语句;如:如: 1001iiss=0;for(i=1;i=100;i+) s+=i;C程序设计演示稿(1-8)for语句的说明:语句的说明:(1)条件为真,则执行)条件为真,则执行for语句中指定的内嵌语句语句中指定的内嵌语句(2)初值表达式和修正表达式可以是逗号表达式)初值表达式和修正表达式可以是逗号表达式(3) e1,e2,e3 均可缺少,但分号保留均可缺少,但分号保留(4)可以取代)可以取代while语句语句(5)初值表达式

25、可以和循环变量无关)初值表达式可以和循环变量无关C程序设计演示稿(1-8)5.3 5.3 辅助控制辅助控制 :1.break语句语句 (1)跳出跳出switch结构结构 (2)用于循环体内,结束本层循环,一次退用于循环体内,结束本层循环,一次退出一层循环出一层循环2.continue语句语句 仅用于循环体内,使本次循环结束仅用于循环体内,使本次循环结束3.goto语句语句 goto 语句标号;语句标号; 标号:用标识符表示,规则同变量标号:用标识符表示,规则同变量 退出多重循环,从内到外退出多重循环,从内到外C程序设计演示稿(1-8)5.4 5.4 循环的嵌套循环的嵌套 :一个循环体内又包含另

26、一个完整的循环结构一个循环体内又包含另一个完整的循环结构三种循环结构可以互相嵌套。三种循环结构可以互相嵌套。例题分析:例题分析:C程序设计演示稿(1-8)例题分析:例题分析:例例1 输入字符显示之。输入字符显示之。#include Main() char c; while(c=getchar()!=EOF) putchar(c);C程序设计演示稿(1-8)例题分析:例题分析:例例2 打印打印ASCII码码0-255的字符。的字符。C程序设计演示稿(1-8)第第6章数组章数组6.1 6.1 一维数组的定义和引用一维数组的定义和引用 :1 定义定义 类型说明符类型说明符 数组名数组名常量表达式常量

27、表达式 如如 int a10;说明:说明: (1)数组名)数组名 (2)用方括号)用方括号 (3)数组长度,元素个数)数组长度,元素个数 (4)不能含变量)不能含变量数组:是有序数据的集合,数组中的元素应是同一类型。数组:是有序数据的集合,数组中的元素应是同一类型。C程序设计演示稿(1-8)2 引用引用 先定义,后使用的原则先定义,后使用的原则C规定:逐个引用数组元素,不能一次引用整个数组规定:逐个引用数组元素,不能一次引用整个数组数组元素的表示形式:数组名数组元素的表示形式:数组名下标下标规定:下标是整型常量或整型表达式规定:下标是整型常量或整型表达式 如如 a5 或或 a2*3等等C程序设

28、计演示稿(1-8)3 初始化初始化 (1)在定义数组时对数组元素赋以初值)在定义数组时对数组元素赋以初值规定:只有静态存贮数组和外部存贮数组才能初始化规定:只有静态存贮数组和外部存贮数组才能初始化 static -静态静态 extern-外部外部 (2)只给部分元素赋值)只给部分元素赋值 (3)使数组中全部元素为)使数组中全部元素为0 (4)在对全部数组元素初始化时,可以不指定数组)在对全部数组元素初始化时,可以不指定数组长度。长度。C程序设计演示稿(1-8)6.2 6.2 二维数组的定义和引用二维数组的定义和引用 :1 定义定义 类型说明符类型说明符 数组名数组名常量表达式常量表达式 常量表

29、达式常量表达式 如如 int a34;是特殊的一维数组是特殊的一维数组 存贮顺序:按行存贮,多维数组同理存贮顺序:按行存贮,多维数组同理C程序设计演示稿(1-8)2 引用引用 数组元素的表示形式:数组元素的表示形式: 数组名数组名下标下标下标下标 如如 a00 或或 a01等等3 初始化初始化C程序设计演示稿(1-8)6.3 6.3 字符数组字符数组 :用来存放字符数据的数组是字符数组,字符数组中每个用来存放字符数据的数组是字符数组,字符数组中每个元素存放一个字符。元素存放一个字符。1 定义定义 类型说明符类型说明符 数组名数组名常量表达式常量表达式 如:如:char a10; int a10

30、;C程序设计演示稿(1-8)2 初始化初始化static char c5=c,h,i,n,a;注注(1)如果字符个数大于数组长度则语法错如果字符个数大于数组长度则语法错 (2)如果字符个数小于数组长度则将字符赋给数组前)如果字符个数小于数组长度则将字符赋给数组前面的元素,其余元素为空格面的元素,其余元素为空格 (3)字符个数等于数组长度时可以省略数组长度)字符个数等于数组长度时可以省略数组长度3 引用引用 可以引用字符数组中的一个元素,得到一个字符。可以引用字符数组中的一个元素,得到一个字符。C程序设计演示稿(1-8)4 字符串和字符串结束标志字符串和字符串结束标志字符数组长度:实际长度字符数

31、组长度:实际长度0;有效长度有效长度字符串结束标志字符串结束标志 0表示表示“china” 共有共有5个字符,但占个字符,但占6个字节个字节可以用字符串常量来初始化字符数组可以用字符串常量来初始化字符数组Static char c=“china”;也可写成也可写成static char c=“china”; 在在C中将字符串作为字符数组来处理,为了测定字符串中将字符串作为字符数组来处理,为了测定字符串的实际长度的实际长度0作为结束标志。作为结束标志。C程序设计演示稿(1-8)5 字符数组输入、输出字符数组输入、输出(1)getchar()/putchar()(2)用格式符用格式符%c输入、输出

32、输入、输出(3)将整个字符串一次输入、输出,用格式符将整个字符串一次输入、输出,用格式符%s如如Static char c=“china”;Printf(“%s”,c);C程序设计演示稿(1-8)注注(1)输出字符不包括结束符输出字符不包括结束符0; (2) 用用%s时输出项是数组名;时输出项是数组名; (3) 长度大于实际长度时也到、长度大于实际长度时也到、0结束;结束; (4)用用scanf函数输入一个字符串,利用一函数输入一个字符串,利用一个个scanf函数输入多个字符串时,以空格函数输入多个字符串时,以空格分隔。分隔。 static char c6; scanf(“%s”,c); pr

33、intf(“%s”,c);所以一维字符数组可以看作是所以一维字符数组可以看作是“字符串变量字符串变量”C程序设计演示稿(1-8)6 字符串输入、输出字符串输入、输出(1)gets(str) 输入一个字符串到字符数组输入一个字符串到字符数组(2)puts(str) 可以包含转义字符,如可以包含转义字符,如0,n等等C程序设计演示稿(1-8)7 字符串函数字符串函数 #include (1)拷贝拷贝 strcpy(str1,str2); 目的目的 源源注:注:str1长度长度str2长度长度str1是数组名形式是数组名形式,str2可以是字符串常量,不能用赋值可以是字符串常量,不能用赋值语句将字符

34、串常量或字符数组赋给一个字符数组。语句将字符串常量或字符数组赋给一个字符数组。如:如:str1=“china”; str1=str2;C程序设计演示稿(1-8)(2)字符串连接字符串连接 strcat(str1,str2); 目的目的 源源注:作用是把字符注:作用是把字符2连到字符连到字符1后面,结果放在字符数组后面,结果放在字符数组1中,所以字符数组中,所以字符数组1必须足够大,初始化时不能省略长必须足够大,初始化时不能省略长度;连接时第一个度;连接时第一个0取消。取消。(3)字符串比较)字符串比较strcmp(str1,str2);(4)测试字符串长度函数)测试字符串长度函数strlen(

35、str)(5)将字符串中大写字母转成小写字母函数)将字符串中大写字母转成小写字母函数strlwr(str)(6)将字符串中小写字母转成大写字母函数)将字符串中小写字母转成大写字母函数strupr(str) C程序设计演示稿(1-8)第第8章模块化程序设计章模块化程序设计8.1 8.1 函数定义函数定义:在在C中子程序的作用是由函数来完成的,中子程序的作用是由函数来完成的, 使用的角度函数有两种使用的角度函数有两种(1)系统函数()系统函数(2)用)用户定义函数;从函数的形式上分(户定义函数;从函数的形式上分(1)无参函数()无参函数(2)有参函数有参函数格式:格式: 函数类型函数类型 函数名(

36、形式参数)函数名(形式参数) 函数体;函数体; 模块化设计;结构化编程。模块化设计;结构化编程。C程序设计演示稿(1-8)说明:说明: 函数类型函数类型-返回值的类型返回值的类型 如:如:float aver(成绩表)成绩表) void-无返值无返值 main() 就应是就应是void类型类型 默认时为默认时为int型型形参:形参: (int a,int b,float r) 或或 (a,b,r) int a,b; float r; 函数类型函数类型 函数名()函数名() 称为称为“空函数空函数”C程序设计演示稿(1-8)8.2 8.2 函数参数和函数值函数参数和函数值:1、形式参数和实际参数

37、、形式参数和实际参数定义函数时函数名后面括号中的变量定义函数时函数名后面括号中的变量形参形参调用函数时函数名后面括号中的表达式调用函数时函数名后面括号中的表达式实参实参通过函数调用使两个函数中的数据发生联系通过函数调用使两个函数中的数据发生联系说明:说明:(1)形参变量在函数调用前无分配存贮空间)形参变量在函数调用前无分配存贮空间(2)实参可以是常量、变量、表达式或数组名)实参可以是常量、变量、表达式或数组名(3)在被定义的函数中,必须指定形参类型)在被定义的函数中,必须指定形参类型(4)实参和形参类型应一致,否则类型不匹配错误)实参和形参类型应一致,否则类型不匹配错误(5)形参和实参间的传递

38、是单向的)形参和实参间的传递是单向的“值传递值传递”,不同,不同单元。单元。C程序设计演示稿(1-8)2、函数的返值、函数的返值(1)函数的返值是通过)函数的返值是通过return语句获得的,语句获得的,return后后面可以是一个表达式。面可以是一个表达式。(2)函数值的类型,在定义函数时指定函数值类型,)函数值的类型,在定义函数时指定函数值类型,如果不指定,按整型处理,函数类型决定返值类型。如果不指定,按整型处理,函数类型决定返值类型。(3)如果被调函数中没有)如果被调函数中没有return语句,则返值不确定。语句,则返值不确定。(4)如果不带回值,应将函数定义为)如果不带回值,应将函数定

39、义为void类型。类型。C程序设计演示稿(1-8)8.3 8.3 函数的调用函数的调用:1、函数调用的一般形式、函数调用的一般形式函数名(实参表列);函数名(实参表列);说明:说明: 对实参表的求值顺序并不是确定的,一般是从右至对实参表的求值顺序并不是确定的,一般是从右至左,这种情况在左,这种情况在printf函数中也同样存在如:函数中也同样存在如:i=2;Printf(“%d %dn”,i,+i);结果:结果:3 3C程序设计演示稿(1-8)2、函数的调用方式、函数的调用方式函数在程序中出现的位置;函数在程序中出现的位置;(1)函数语句)函数语句(2)函数表达式)函数表达式(3)函数参数)函

40、数参数C程序设计演示稿(1-8)3、被调函数的说明、被调函数的说明在一个函数中调用另一个函数所具备的条件是:在一个函数中调用另一个函数所具备的条件是:(1)被调函数是已经存在的函数(库函数、自定义)被调函数是已经存在的函数(库函数、自定义)(2)如果是库函数则)如果是库函数则 #include 命令相关头文件命令相关头文件(3)如果是用户自定义函数,在主调函数中对被调函数声)如果是用户自定义函数,在主调函数中对被调函数声明:明: 函数类型函数类型 函数名(参数表);函数名(参数表); 特例:特例: (1)函数的返值是整型或字符型)函数的返值是整型或字符型 (2)被调函数的定义在主调函数之前)被

41、调函数的定义在主调函数之前 (3)在所有函数定义之前,说明了函数类型)在所有函数定义之前,说明了函数类型C程序设计演示稿(1-8)8.4 8.4 函数的嵌套调用函数的嵌套调用:关系:自身可调用,相互之间可调用,即在调用一个函关系:自身可调用,相互之间可调用,即在调用一个函数的过程中,又调用另一个函数。如图数的过程中,又调用另一个函数。如图8.5函数1函数2函数3例8.6 P155C程序设计演示稿(1-8)8.5 8.5 函数的递归调用函数的递归调用:1、直接递归、直接递归2、间接递归、间接递归函数A函数A函数BC程序设计演示稿(1-8)8.6 8.6 数组作为函数参数数组作为函数参数:数组元素

42、作参数同变量相同,数组名作为参数时传数组元素作参数同变量相同,数组名作为参数时传递整个数组。递整个数组。当用数组名作函数参数时,实参和形参都应用数组当用数组名作函数参数时,实参和形参都应用数组名(或指针变量)。名(或指针变量)。例8.11 P165C程序设计演示稿(1-8)说明说明(1)主调函数和被调函数分别定义数组)主调函数和被调函数分别定义数组(2)实参数组和形参数组类型应一致)实参数组和形参数组类型应一致(3)实参数组和形参数组大小可以不一致,)实参数组和形参数组大小可以不一致,C编译对形参数编译对形参数组大小不作检查,只是将实参首址传递给形参数组。组大小不作检查,只是将实参首址传递给形

43、参数组。如:例如:例8.12(4)不是)不是“传值传值”而是而是“传址传址”例:例:8.13(5)也可以用多维数组名作函数参数,同上。)也可以用多维数组名作函数参数,同上。例:例:8.14C程序设计演示稿(1-8)8.7 8.7 局部变量和全局变量局部变量和全局变量:1、局部变量、局部变量在函数内定义的变量在函数内定义的变量例:例:float f1(int a) int b,c; . C程序设计演示稿(1-8)说明说明(1)主函数)主函数main中定义的变量只在主函数中有效中定义的变量只在主函数中有效(2)不同函数中可以使用相同的变量)不同函数中可以使用相同的变量(3)形参也是局部变量)形参也

44、是局部变量(4)在一个函数内部,可以在复合语句中定义变量,这些)在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,离开复合语句该变量就无效。变量只在复合语句中有效,离开复合语句该变量就无效。C程序设计演示稿(1-8)8.7 8.7 局部变量和全局变量局部变量和全局变量:2、全局变量、全局变量在函数之外定义的变量称为外部变量,外部变在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其它函数所共量是全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围为用,它的有效范围为“从定义的位置开始到文件结束从定义的位置开始到文件结束”。例:例:8.15C

45、程序设计演示稿(1-8)说明说明(1)设全局变量的作用是增加了函数间数据联系,可以从)设全局变量的作用是增加了函数间数据联系,可以从函数得到一个以上的返值,是函数得到一个以上的返值,是“双向传递的双向传递的”。(2)不要轻易使用全局变量)不要轻易使用全局变量在程序执行过程中都占用存贮单元;通用性降低;不在程序执行过程中都占用存贮单元;通用性降低;不清晰。清晰。(3)在定义点之前引用外部变量要用关键字)在定义点之前引用外部变量要用关键字extern作作“外外部变量说明部变量说明”(4)在同一源文件中,外部变量与局部变量同名,则在局)在同一源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。部变量的作用范围内,外部变量不起作用。C程序设计演示稿(1-8)8.8 8.8 动态存贮变量与静态存贮变量动态存贮变量与静态存贮变量:1、变量的存贮类别、变量的存贮类别 以上是从变量的作用域角度分;从变量值生存期角以上是从变量的作用域角度分;从变量值生存期角度分静态存贮变量和动态存贮变量。度分静态存贮变量和动态存贮变量。静态存贮区存放:全局变量静态存贮区存放:全局变量动态存贮区存放:动态存贮区存放: (1)函数形参变量)函数形参变量 (2)局部变量(未加)局部变量(未加static说明的)说明的

温馨提示

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

评论

0/150

提交评论