C语言程序设计.ppt_第1页
C语言程序设计.ppt_第2页
C语言程序设计.ppt_第3页
C语言程序设计.ppt_第4页
C语言程序设计.ppt_第5页
已阅读5页,还剩202页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计教案,c语言程序设计教案,对教材的整合: 总体说明: 该教材按循序渐进的原则,介绍了C语言程序设计中的基本概念和语法规则,在系统介绍C语言程序设计基础知识的前提下,通过典型的例题分析,着重强调了利用C语言进行程序设计的思路和技巧。重点掌握选择、循环结构程序设计和一维数组、函数与文件操作。难点在于对指针相关内容的理解。 删减的内容: 第9章链表的内容,重在理解链表处理的思路,只要求学生能够写出有关链表操作的关键实现语句。第10章位运算、第11章编译预处理和第12章文件为选学内容。,c语言程序设计教案,对教材的整合: 补充、更新的内容说明: 参考谭浩强主编的C语言设计题解与上机指导,

2、增加上机实践编程题。 参考书: 1、谭浩强著,C程序设计(第二版),清华大学出版社,2001.3 2、谭浩强著,C语言设计题解与上机指导,清华大学出版社,2001.3 3、许志平著,C程序设计技术指导与实例,学苑出版社,2002,c语言程序设计教案,课程安排与成绩考核: 本课程共72个课时,每周4课时。 期末为闭卷测试,期末成绩由两部分组成:其中考试成绩占70,平时成绩占30。平时成绩主要由课堂考勤、课堂表现、上机试验和作业构成。,c语言程序设计教案,目 录,第1章 语言概述 第2章 数据类型、运算符与表达式 第3章 基本语句 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 数 组

3、 第7章 函数和变量 第8章 结构与联合 第9章 指 针,第一章 语言概述,本章授课理论课: 3 学时 实践课:1 学时,主要内容: C语言的特点 C语言的开发流程 简单的C语言程序 WinTC的基本操作,教学目的及要求: 通过对本章的学习,要求掌握C语言的特点及其发展历史;初步认识C语言编译软件WinTC的使用,基本了解C语言程序开发的设计流程。,第一章 语言概述,本章重点: C语言的特点 C语言程序的开发流程 WinTC的基本操作 本章难点: WinTC的基本操作,第一章 语言概述,1语言的诞生与发展 (1)在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件

4、,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。 (2)语言是贝尔实验室于70年代初研制出来的,后来又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据语言问世以来各种版本对语言的发展和扩充,制定了ANSI C标准(1989年再次做了修订)。 *本书以ANSI C新标准来介绍。,1.1 C语言的特点,(3)目前,在微机上广泛使用的语言编译系统有Microsoft C、Turbo C 、Borland C等。虽然它们的基本部分都是相同的,但还是有一些差异, 所以

5、请大家注意自己所使用的编译系统的特点和规定(参阅相应的手册)。 本书选定的上机环境是Win-TC(Windows操作系统)。 2C语言的特点 C语言同时具有汇编语言和高级语言的优势。 (1)语言简洁、紧凑,使用方便、灵活。 (2)运算符极其丰富。 (3)生成的目标代码质量高,程序执行效率高。 (4)可移植性好(较之汇编语言)。 (5)可以直接操纵硬件。,3. 在C语言中,除实现顺序、选择和循环三种基本结构等的9条控制语句外,输入输出操作均由标准库函数(不是C语言的组成部分)来实现。 所以学习C语言,不仅要学习这9条控制语句和各种运算符,而且要学习并掌握常用标准库函数的使用。,1.2 C语言程序

6、的开发过程,1. 编辑 编辑C语言源程序,以.C为扩展名。 2. 编译 将C语言源程序编译成目标程序。扩展名为.OBJ。 3. 连接 将目标程序连接生成可执行的代码。可执行文件的扩展名为.EXE。 4. 执行 执行可执行文件。,1.3 简单的语言程序,1.3.1 语言程序的总体结构 一个完整的语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。 案例1.1 仅由main()函数构成的语言程序。 /*案例代码文件名:AL1_1.C*/ /*功能:仅由main()函数构成的语言程序示例*/ main() printf(“This is a C

7、 program.n”); 程序运行结果: This is a C program.,1.3.2 C语言程序规定 一个C语言程序可由多个函数组成,但必须包含一个且只能包含一个名为main的函数,程序总是从main函数开始执行。 由一对扩起来的部分是函数体,其中语句实现程序的预定功能。 C语言的每个基本语句都以“;”结束。 C语言程序书写格式较自由,一行可写一个或多个语句。 所有的变量必须“先定义、后使用”。 /*/中的内容是程序的注释部分 #include语句是编译预处理语句。,1.4 Win-TC软件的使用,本章小结: 本章系统介绍了C语言的特点及其C语言程序设计开发流程,让学生对C语言有个

8、感性的认识,初步接触了简单易学的C语言编译软件Win-TC。,第一章 语言概述,常量和变量 基本数据类型及其常量 算术运算符、赋值运算符及其表达式 关系运算符、逻辑运算符及其表达式 逗号运算符、条件运算符及其表达式 变量的初始化 不同类型数据之间的转换 类型定义,第二章 数据类型、运算符及其表达式,主要内容:,本章授课理论课: 4 学时 实践课:4 学时,第二章 数据类型、运算符及其表达式,教学目的及要求: 通过对本章的学习,要求掌握C语言程序设计的基础知识,能够对变量和常量进行定义及使用,对常用的运算符及其表达式能够熟练应用。基本了解C语言不同类型数据间的转换和类型定义。,本章重点: 变量定

9、义和应用 基本类型及其常量定义和应用 算术运算符、赋值运算符及其表达式 关系运算符、逻辑运算符及其表达式 本章难点: 逗号运算符、条件运算符及其表达式 类型定义,第二章 数据类型、运算符及其表达式,2.1 常量和变量,常量 即在程序运行过程中其值不会改变的量。 变量 即在程序运行过程中其值可以改变的量。 标识符 用以标识程序中用到的变量名、函数名、类型名、数组名、文件名、符号常量名等的有效字符序列。标识符的命名规则:由字母(大、小写均可)、数字及下划线组成,且第一个字符必须是字母或下划线。,变量名,合法变量名: Year,Day,ATOK,x1, _CWS, _change, _to 不合法变

10、量名: #123, .CUM, $100, 1996Y, 1-2-3- 大,小写字母有区别,一般变量名用小写,组成变量名的有效字符数随C语言的编译系统而定,同一个函数内所定义的变量不能同名。,最基本的数据类型有四种: 整型: int 字符型: char 单精度型: float 双精度型: double,2.2 基本数据类型及其常量,浮点型,2.2.1 整型变量及其常量,整型变量 用以存放整型数据. 一般定义形式: int i1,i2; 整型常量 C语言中可用三种数制表示: 十进制: 如 250,23,-10等 十六进制: 以0X或0 x开头,如 0X61(相当97) 八进制: 以0开头,如 0

11、141 (相当97),2.2.2 浮点型变量及其常量,带有小数点的数称为浮点数或实型数。 浮点型变量 分单精度浮点型变量和双精度浮点型变量。 单精度浮点型变量的定义方式:float f1,f2; 双精度浮点型变量的定义方式:double d1,d2; 不同系统中,float型数据和double型数据所能提供的精度是有差异的。 浮点型常量 一般不分float型和double型,根据变量的类型来截取相应的有效位数。 两种表示形式: (1)十进制形式:由数字和小数点组成。如,21.34567,-4,30等。 (2)指数形式:即用科学计数法。 字母E和e之前必须有数字,且e后面的指数部分必须是整数。,

12、2.2.3 字符型变量及其常量,字符型变量 用于存放一个字符。一般定义形式: char c1,c2; 字符型常量 用一对单引号括起来的一个字符。如 A,3,#等。 转义字符 以开头的特殊字符型常量。 n 换行字符 r 回车字符 b 退格字符 t 跳格字符 单引号字符 “ 双引号字符,2.2.4 长整型、短整型和无符号型,长整型 变量定义的一般形式: long int X; 能表示的数值范围与计算机系统有关,是int的两倍。长整型常量:在整型常量的末尾加上字母L或l。例:x=9876543L; 短整型 变量定义的一般形式: short int x; 能表示的数值范围与计算机系统有关,有的与int

13、相同,有的小于int。 无符号整型 变量定义的一般形式: unsigned int x; 用于存放非负整型数。与int型变量占相同的内存空间。,注:C语言只要求long型数据长度不短于int型,short型数据长度不长于int型,各数据类型所占存储字节数具体所使用系统及编译器。,2.2.5 sizeof运算符,用于了解一个变量或某种数据类型的量在内存中所占字节数。Sizeof有两种使用方法: sizeof 表达式 如:当x是整形变量的时候,sizeof x =2; sizeof(类型名) 如:sizeof(float)=4,2.3 算术运算符、赋值运算符及其表达式,运算符的优先级及结合性 优先

14、级:一个表达式中,多个运算符运算的先后顺序。 结合性:一个运算对象的两侧的运算符的优先级相同时, 进行运算的结合方向。 算术运算符和算术表达式 1. 加、减、乘、除及取模运算符(自左至右) +、-、*、/(运算符两侧是整数,则其结果为整数)、%(取两个整型数相除的余数)。 2. 增1、减1运算符(自右至左) 运算对象只能是整型或字符型变量。 i+;先使用变量i的值,再使i的值加1。 +i;先使i的值加1,再先使用变量i的值。 i-;先使用变量i的值,再使i的值减1。 -i;先使i的值减1,再先使用变量i的值。,赋值运算符和赋值表达式 1.赋值运算符(自右至左) = 功能:将赋值运算符右边的表达

15、式的值赋给左边的变量。 例:x=23;f=23.5; h=A; 2.复合赋值运算符(自右至左) +=, -= ,*= ,/= ,%= 例: x+=10; y*=20;,举例,#includestdio.h void main() int i,j; i=3; j=-i+; printf(%d,%dn,j,i); system(“pause”) ,#includestdio.h void main() int a; a=12; a+=a-=a*a; printf(%dn,a); system(“pause”) ,a+=a-=a*a = 1. a-=a*a 即:a=a-a*a 2. a+=a 即:a

16、=a+a a+=a-=a*a = a=(a-a*a)+(a-a*a),2.4 关系运算符、逻辑运算符及其表达式,关系运算符和关系表达式 1.关系运算符(自左至右) 共6种: 、=、=、!= 后两种运算符的优先级低于前4种。 关系运算符的优先级低于算术运算符。 2. 关系表达式 用关系运算符将两个运算量连接起来的有意义的式 子。例:XY, A+B=C+D。关系表达式是一个逻辑值“真”(用1表示)或“假”(用0表示)。,逻辑运算符和逻辑表达式 1.逻辑运算符 有三种: ! 、 char x=a,y=b; printf(%dn,ab|bc); printf(%dn,!(xy); system(“pa

17、use”); ,举例,#includestdio.h void main(void) int a=10,b=20,c=30; char x=a,y=b; printf(%d,%dn,ab,bc); printf(%dn,xy); system(“pause”); ,2.5 逗号运算符、条件运算符及其表达式,逗号运算符和逗号表达式 1.逗号运算符:,(自左至右) 优先级最低。 2.逗号表达式: 一般形式:表达式1,表达式2,表达式n 求解过程:先求解表达式1,再求解表达式2,最后求解表达式n,逗号表达式的值为最右边表达式n的值。 例:a=6,a*3,条件运算符和条件表达式 1.条件运算符:?:(

18、自右至左) 唯一的三目运算符。 2.条件表达式 一般形式:表达式1?表达式2:表达式3 功能:当表达式1的值为“真”时,条件表达式的值取表达式2的值,当表达式1的值为“假”时,条件表达式的值取表达式3的值。 例:c=(ab)?a:b;,举例,#includestdio.h void main(void) int a=10,b=20,c=30,x; x=(a,b,c); printf(%dn,x); ,#includestdio.h void main(void) int a,b,max; scanf(%d,%d, ,2.6 变量的初始化,即在对变量进行定义的同时,为其赋初值。 例:int ag

19、e=20; char letter=A; int convert=b-B; float average=3.2*9.8; int x=10,y=20,z=30;,2.7 不同类型数据之间的转换,不同类型数据在进行混合运算时,需进行类型转换,有两种方式: 1.自动类型转换 2.强制类型转换 C语言允许字符型数据和整型数据之间通用。,2.7.1 自动类型转换,自动类型转换规则: 当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃,且需进行相应有效位数的截取。 当整型数据赋给浮点型变量时,数值上不发生任何变化。 只要某个算术运算符的两个运算对象中有一个是浮点数,则运算将按浮点型格式来进行

20、。,2.7.2 强制类型转换,自动类型转换达不到目的时,可以利用强制类型转换。 一般形式:(类型名)(表达式) 例:(float)x/y 说明:强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型没有发生任何变化。,举例,#includestdio.h void main(void) int i=a; char c=97; printf(%d,%cn,c,c); printf(%d,%cn,i,i); ,#includestdio.h void main(void) int i=20,j; float f; j=i/40; f=(float)i/40; printf(%dn,j);

21、printf(%fn,f); ,2.8 类型定义,C语言允许使用typedef语句定义新的类型名,以代替已有的类型名。 例: typedef int counter; counter x,y;= int x,y; 说明:1. typedef不能创建新的类型 2. typedef不能用以定义变量.,第二章 数据类型、运算符及其表达式,本章小结: 本章主要介绍C语言程序设计中的常用数据类型,对变量和常量的定义和引用,对常用的运算符及其表达式应用方法。简单介绍C语言不同类型数据间的转换方法和类型定义方法。,基本语句 数据的输入 数据的输出,第三章 基本语句,主要内容:,本章授课理论课: 2 学时 实

22、践课:2 学时,第三章 基本语句,教学目的及要求: 通过对本章的学习,要求掌握C语言程序设计中常用的基本语句和复合语句,熟悉数据的输入和输出方法。能够调用常用的数据输入和输出函数。,本章重点: 基本语句 复合语句 数据的输入 数据的输出 本章难点: 数据的输入 数据的输出,第三章 基本语句,语句和复合语句 数据的输入 数据的输出,第三章 基本语句,3.1 语句和复合语句,一个表达式的后面跟一个分号构成语句。 用左、右花括号括起来的语句称为复合语句。 一个复合语句在语法上等同于一个语句。 例: x=a+b; if(1) a=3;b=4;x=a*b;,第三章 基本语句,字符输入函数 格式: get

23、char() 功能: 接收从键盘输入的一个字符。 例: #includestdio.h void main(void) char c; c=getchar(); ,3.2 数据的输入,第三章 基本语句,格式输入函数 格式: scanf(格式控制,地址表); 功能: 用以接收从键盘上输入的多个任何类型的 数据。 1.格式控制 由%和格式字符组成。作用是将输入的数据转换成指定的格式后存入到由地址表所指向的相应的变量中。 例:%c,%d,%f 2.地址表 由变量地址组成。变量地址由短整型用hd) o 输入八进制整数(长整型用lo;短整型用ho) x 输入十六进制整数(长整型用lx;短整型用hx) c

24、 输入单个字符 f 输入浮点数 e 输入浮点数,作用与f相同. s 输入以0为结束标致的字符串,3.2 数据的输入,第三章 基本语句,举例,#includestdio.h void main(void) int i; float f; char c; scanf(%d%f%c, ,3.2 数据的输入,第三章 基本语句,字符输出函数 格式: putchar(变量名) 功能: 将变量中的字符输出到屏幕当前光标位置。 例:#includestdio.h void main(void) char c; c=getchar(); putchar(c); ,3.3 数据的输出,第三章 基本语句,格式输出函

25、数 格式:printf(格式控制,输出表); 功能:用以输出多个任何类型的数据。 1.格式控制 由%和格式字符组成,作用是将要输出的数据转换为指定的格式后输出。 例:%d,%f,%c 2. 输出表 由变量名组成。变量名间用逗号隔开。 例:a,b,c,第三章 基本语句,3.3 数据的输出,格式字符,d 输出十进制整数(长整型用ld) o 输出八进制整数(长整型用lo) x 输出十六进制整数(长整型用lx) c 输出单个字符 f 输出浮点数 e 以科学计数法输出浮点数 s 输出以0为结束标致的字符串,第三章 基本语句,3.3 数据的输出,#includestdio.h void main(void

26、) char c1,c2; scanf(%c%c, ,第三章 基本语句,3.3 数据的输出,举例,第三章 基本语句,本章小结: 本章在阐述C语言程序设计中常用的基本语句和复合语句基础上,详细介绍了数据的输入和输出的常用函数及其使用方法。,第四章 选择结构,主要内容: 结构化程序设计的三种基本结构 IF-else选择结构 多分支Switch选择结构,本章授课理论课: 2 学时 实践课:2 学时,教学目的及要求: 通过对本章的学习,要求掌握C语言程序设计中的三种基本结构,把握选择结构的两种常用语句结构。基本了解C语言程序开发的选择流程设计。,第四章 选择结构,本章重点: C语言程序设计的三种基本结

27、构 IF-else选择语句结构 多分支Switch选择语句结构 本章难点: Switch多分支选择结构,第四章 选择结构,结构化程序设计的三种基本结构 1.顺序结构 按语句的书写顺序依此执行。 2.选择结构 通过对特定条件的判断,选择一个分支执行。 3.循环结构 在给定条件下,重复执行某段程序,直到条件不满足为止。,第四章 选择结构,格式:if(表达式) 语句1 else 语句2 功能:先计算表达式的值,若表达式的值为“真”(非0),则执行语句1,否则,若表达式的值为“假”(为0),则执行语句2。 说明: 1、语句1、语句2可以是单个语句,也可是复合语句。 2、if语句可以嵌套。(else总是

28、与它前面的离它最 近的if配对)。,4.1 IF条件选择语句,第四章 选择结构,if语句举例,#includestdio.h main() char c1,c2; c1=getchar(); c2=getchar(); if(c1c2) printf(%cn,c1); else printf(%cn,c2); ,#include main() int a,b,c,max; printf(Input a,b,c:); scanf(%d,%d,%d, ,4.1 IF条件选择语句,第四章 选择结构,格式:switch(表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句2 ca

29、se 常量表达式n: 语句n default: 语句n+1 功能:先计算switch后面表达式的值,若此值等于某个case后面的常量表达式的值,则转去执行该case后面的语句去执行;否则执行default后面的语句。,4.2 多分支选择语句,第四章 选择结构,说明: 1.“表达式”及“常量表达式”的值,必须是整型或字符型。 2. case后面的常量表达式的值必须互不相同。 3. 执行完某个case后面的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句结束或“break”语句为止。 4. case后面的多个语句可以不用花括号括起。 5. 多个case后面的语句可以共用一组执行语

30、句。,4.2 多分支选择语句,第四章 选择结构,case 4: case 6: case 9: case11:days=30;break; case 2: if(year%4=0 ,4.3 Switch语句举例,第四章 选择结构,#include main() int year,month,days; printf(Input year and month:); scanf(%d%d,本章小结: 本章简单介绍了C语言程序设计中的三种基本结构,重点系统介绍了选择结构的两种常用语句结构及其使用方法。,第四章 选择结构,第五章 循环结构,主要内容: while循环语句 do-while循环语句 fo

31、r循环语句 break和continue语句 空操作语句和goto语句,本章授课理论课: 4 学时 实践课:4 学时,教学目的及要求: 通过对本章的学习,要求熟悉C语言程序设计中常用的循环语句,包括while、do-while和for语句结构,并能够熟练应用它们去设计程序;掌握循环语句结构配套使用的break和continue的用法;了解空操作语句和goto语句的用法;,第五章 循环结构,本章重点: while、do-while和for循环语句 break和continue语句 空操作和goto语句 本章难点: for循环语句 break和continue的用法区别,第五章 循环结构,whil

32、e循环语句 do-while循环语句 for循环语句 break语句和continue语句 空操作语句和goto语句,第五章 循环结构,格式:while(表达式) 循环体 功能:先计算表达式的值,若表达式的值为真,则执行循环体,否则,执行循环体后面的语句。,第五章 循环结构,5.1 while循环语句,While循环举例,#includestdio.h void main() int i=1,sum=0; while (i=100) sum+=i; i=i+1; printf(%dn,sum); ,第五章 循环结构,5.1 while循环语句,格式: do 循环体 while (表达式); 功

33、能:先执行一次循环体,再判断表达式的值是否为“真”, 若为“真”, 继续执行循环体,直到表达式的值为“假”,退出循环。,第五章 循环结构,5.2 do-while循环语句,do-while循环语句举例,#includestdio.h void main() int i=1,sum=0; do sum+=i; i=i+1; while (i=100); printf(%dn,sum); ,第五章 循环结构,5.2 do-while循环语句,格式:for(表达式1;表达式2;表达式3) 循环体 执行过程: 1、先求解表达式1, 2、再求解表达式2,若表达式2的值为“真”,则执行循环体中的语句,接着

34、求解表达式3, 3、重复执行步骤2),直到表达式2的值为“假”,退出循环。,第五章 循环结构,5.3 for循环语句,for循环说明,for语句中的任何一个表达式都可以省略,但其中分号不能省略。省略表达式2,相当于死循环。此时应在循环体中设置相应语句结束循环。 如循环体由多个语句组成,则必须用花括号括起。 表达式1和表达式3都可是逗号表达式。,第五章 循环结构,5.3 for循环语句,for循环举例,#includestdio.h void main() int i,sum; for(i=1,sum=0;i=100;i+) sum+=i; printf(%dn,sum); ,第五章 循环结构,

35、5.3 for循环语句,break语句 格式:break; 功能:终止switch语句或循环语句的执行。 continue语句 格式:continue; 功能:终止本次循环。,第五章 循环结构,5.4 break和continue,Break、continue语句举例,#includestdio.h void main() int i,sum; for(i=1,sum=0;i2000) break; sum+=i; printf(%dn,sum); ,第五章 循环结构,5.4 break和continue,#includestdio.h void main() int sum,i; char

36、ch; sum=0; for(i=0;i9) continue; sum+; printf(sum=%d,sum); ,第五章 循环结构,Break、continue语句比较举例,#includestdio.h void main() int sum,i; char ch; sum=0; for(i=0;i9) continue; sum+; printf(sum=%d,sum); ,#includestdio.h void main() int sum,i; char ch; sum=0; for(i=0;i9) break; sum+; printf(sum=%d,sum); ,空操作语句

37、 仅由一个分号组成,不进行任何操作。 goto 语句 格式: goto 标号; 标号:语句; 功能:将执行流程转到以该标号为前缀的语句去执行。 说明:标号的命名规则与变量完全相同。,第五章 循环结构,5.5 空操作和goto语句,举例,#includestdio.h void main() int sum,i; char ch; for(sum=0,i=1;i=100;sum+=i,i+) ; printf(sum=%dn,sum); ,#includestdio.h void main() int i; float sum; sum=1; i=2; L1:sum+=1/(float)i; i

38、+=2; if(i=50) goto L1; printf(sum=%fn,sum); ,第五章 循环结构,5.5 空操作和goto语句,本章小结: 本章重点介绍了C语言程序设计中常用的循环语句及其使用方法,包括while、do-while和for语句结构,并通过例子说明了它们的使用方法;同时介绍了循环语句结构配套使用的break和continue的用法;最后,对空操作语句和goto语句的用法作了简单介绍;,第五章 循环结构,第六章 数 组,主要内容: 一维数组定义、引用、初始化和举例 二维数组定义、引用、初始化和举例 字符数组定义、引用、初始化和举例 字符串函数的应用,本章授课理论课: 4

39、学时 实践课:4 学时,教学目的及要求: 通过对本章的学习,要求掌握C语言一维数组、二维数组和字符数组的定义、引用及其初始化方法;初步认识数组的应用举例使用,了解常用的字符串处理函数。,第六章 数 组,本章重点: 一维数组的定义、引用、举例和初始化 二维数组的定义、引用、举例和初始化 字符数组的定义、引用、举例和初始化 字符串处理函数 本章难点: 一维数组、二维数组和字符数组的初始化,第六章 数 组,一维数组 二维数组 字符数组和字符串,第六章 数 组,一维数组的定义和引用 定义:类型说明符 数组名常量表达式; 例:int age10; float a10,f,b20; 说明:不允许动态定义数

40、组。 如:int i; i=15; int datai; 引用:数组名下标表达式 例:a0=10;a5=2*a0; 说明:下标从0开始,不允许一次引用整个数组,只能逐个引用每个数组元素。 一维数组元素的初始化 static int a5=1,2,3,4,5; static int data5=5,4,3; static int data5; static int data=1,2,3,4,5;,第六章 数 组,6.1 一维数组,举例,#includestdio.h void main() int i; static int x=10,8,7,6,5; static int y=-3,9,-10

41、,-2,4; int z5; for(i=0;i5;i+) zi=xi+yi; for(i=0;i5;i+) printf(%dn,zi); ,第六章 数 组,6.1 一维数组,二维数组的定义和引用 定义:类型说明符 数组名常量表达式常量表达式; 例:int x32; float a23,f,b20; 说明:数组元素的排列顺序按行进行。 引用:数组名下标表达式下标表达式 例:a01=10;a11=2*a01; 说明:每个下标从0开始,不允许一次引用整个数组,只能逐个引用每个数组元素。 一维数组元素的初始化 static int a32=1,2,3,4,5, 6; static int data

42、23=5,4,3; static int data32=1,2,3; static int data2=1,2,3,4;,第六章 数 组,6.2 二维数组,举例,#includestdio.h void main() int year,month,day,days,i,leap; static int mtable13=0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31; printf(input year,month,day:); scanf(%d%d%d, ,第六章 数 组,6.2 二维数

43、组,字符数组 一维数组定义: char 数组名常量表达式; 二维数组定义: char 数组名常量表达式常量表达式; 字符数组元素的引用: c5=B; ch12=k; 字符数组初始化: static char ch5=G,O,O,D,! 说明:初值个数可以少于数组元素的个数,不可多于。,第六章 数 组,6.3 字符数组和字符串,字符数组举例,#includestdio.h void main() static char text=h,e,l,l,o; char buff5; int i,flag; for(i=0;i5;i+) buffi=getchar(); flag=0; for(i=0;i

44、5;i+) if(buffi!=texti) flag=1; break; if(flag) printf(This word is not hello); else printf(This word is hello); ,第六章 数 组,6.3 字符数组和字符串,字符串,字符串及其结束标志 字符串是用双引号括起来的字符序列。 字符串利用字符数组存放。 字符串结束标志: 0 字符串常量初始化数组: static char str=“Happy”; 或: static char str=“Happy”; 字符串的输入和输出 “%c”格式符:每次输入或输出一个字符。 “%s”格式符:每次输入或输

45、出一个字符串。,第六章 数 组,6.3 字符数组和字符串,字符串输入输出举例,#includestdio.h void main() char str10; int i; printf(Input a string:); scanf(%s,str); i=0; while(stri!=0) printf(%c,stri); i+; ,第六章 数 组,6.3 字符数组和字符串,常用的字符串处理函数,输入字符串函数 输出字符串函数 字符串比较函数 字符串拷贝函数 字符串连接函数 字符串测试长度函数,第六章 数 组,6.3 字符数组和字符串,输入字符串函数,格式:gets(字符数组名) 功能:输入一

46、个字符串。 说明: 1.要用#include命令将“stdio.h”头文件包含到文件中。 2. 返回字符数组的首地址。 例:char p20; gets(p);,第六章 数 组,输入字符串函数举例,#includestdio.h main() char p20; gets(p); printf(%sn,p); ,第六章 数 组,输出字符串函数,格式:puts(字符数组名) 功能:输出以0结尾的字符串。 说明: 要用#include命令将“stdio.h”头文件包 含到文件中。 例:char p20; puts(p);,第六章 数 组,输出字符串函数举例,#includestdio.h main

47、() char p20; gets(p); puts(p); ,第六章 数 组,字符串比较函数,格式:strcmp(字符串1,字符串2) 功能:比较两个字符串。 说明: R0 字符串1字符串2 例:int R; R=strcmp(“Good”,”Happy”),第六章 数 组,字符串比较函数举例,#includestdio.h #includestring.h void main() char str1=abcde,p20; int r; gets(p); r=strcmp(str1,p); printf(%d,r); ,第六章 数 组,字符串拷贝函数,格式: strcpy(字符数组1,字符数

48、组2) 功能: 将字符数组2(以0结尾)拷贝到字符 数组1中。 例:static char str2 =“string” char str17; strcpy(str1,str2);,第六章 数 组,字符串拷贝函数举例,#includestdio.h #includestring.h void main() char str120,p20; gets(p); strcpy(str1,p); printf(%sn,str1); ,第六章 数 组,字符串连接函数,格式:strcat(字符串1,字符串2) 功能:连接两个以0结尾的字符串。 说明: 字符数组1必须足够长,以便容纳字符串2。 例:sta

49、tic char str120=“Happy” static char str210=“New Year” strcat(str1,str2);,第六章 数 组,字符串连接函数举例,#includestdio.h #includestring.h void main() char p1=abcde,p2=12345; strcat(p1,p2); printf(%sn,p1); ,第六章 数 组,字符串测试长度函数,格式:strlen(字符串) 功能:测试字符串长度(不包括0)。 例:strlen char str10=“China”; printf(“%d”,strlen(str);,第六章

50、 数 组,字符串测试长度函数举例,#includestdio.h #includestring.h void main() char p1=abcde; int i,j; i=strlen(p1); j=strlen(1234567890); printf(%d,%dn,i,j); ,第六章 数 组,本章小结: 本章主要介绍了C语言一维数组、二维数组和字符数组的定义、引用及其初始化方法;阐述了数组的应用方法,并介绍了跟数组相关的常用的字符串处理函数的用法。,第六章 数 组,第七章 函 数,主要内容: 函数的概念和定义 函数的常用调用方法 函数的参数传递方式 函数变量的作用域 函数的作用域,本章

51、授课理论课: 6 学时 实践课:6 学时,教学目的及要求: 通过对本章的学习,要求掌握构成C语言程序模块的单元函数的特点及其定义和调用的方法;初步认识C语言变量的作用范围,区分函数的作用域。,第七章 函 数,本章重点: 函数的定义 函数的调用方法 函数的参数传递方式 函数的作用域 函数变量的作用域 本章难点: 函数的调用方法及其参数传递方式,第七章 函 数,函数的概念 函数的定义和调用 函数的返回值及其类型 函数的参数及其传递方式 函数的嵌套调用和递归调用 变量的作用域及存储类型 内部函数和外部函数,第七章 函数和变量,一个C程序由一个或多个函数组成,必须有且仅有一个主函数(main()。 函

52、数之间没有从属关系。 函数通过调用执行,从main函数开始,main函数可以调用任何一个函数,其他函数不能调用main函数。 函数包括:标准库函数和用户自定义函数。,第七章 函数和变量,7.1 函数的概念,函数的定义 格式:类型说明符 函数名(形参表) 形参类型说明 说明部分 语句部分(函数体部分) 函数的调用 格式:函数名(实参表); 例,第七章 函数和变量,7.2 函数的定义和调用,函数的定义和调用举例,#include stdio.h int max(int a,int b) int i; i=(ab)?a:b; return(i); main() int x=10,y=20,temp;

53、 temp=max(x,y); printf(The max is %dn,temp); system(pause); ,第七章 函数和变量,7.2 函数的定义和调用,返回语句 格式:return (表达式); 或: return 表达式; 返回值类型 C语言规定,第七章 函数和变量,7.3 函数返回值与类型,C语言规定,在调用函数中,通常应对被调用函数的返回值类型进行说明 例:main() float count(); float s; s=count(20); ,第七章 函数和变量,7.3 函数返回值与类型,当被调用函数的定义位于调用函数之前时可不必说明 例: float count(n)

54、 int n; float s; return(s); main() float s; s=count(10); ,第七章 函数和变量,7.3 函数返回值与类型,允许在所有函数的外面、文件的开头对函数的类型进行说明,而在调用函数中便可以不对被调用函数的类型进行说明。 例:float count(); main() float s; s=count(10); float count(n) int n; float s; return(s); ,第七章 函数和变量,7.3 函数返回值与类型,当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略。 当函数没有返回值时,函数的返回值类型可

55、说明为void型。 例:#includestdio.h void abc() printf(good!); main() abc(); ,第七章 函数和变量,7.3 函数返回值与类型,函数返回值类型一般应与return语句中的表达式的值的类型一致,若不同,则以函数定义时的返回值类型说明为准。 允许在没有返回值的函数中使用return语句,以结束函数的执行,返回主调函数。 格式:return,第七章 函数和变量,7.3 函数返回值与类型,实参和形参 实参:函数调用时,函数名后面的参数 形参:函数定义时,函数名后面的参数。 一般变量(包括数组元素)作函数参数 实参形参 (单向)值传递 形参值改变不

56、影响实参。 数组名作函数参数 实参和形参共占一段存储单元 (双向)地址传递 形参值的改变将影响实参。,第七章 函数和变量,7.4 参数及传递方式,一般变量(包括数组元素)作函数参数,#includestdio.h int mult10(int n) n*=10; return(n); main() int num; int result; num=5; result=mult10(num); printf(result=%dn,result); printf(num=%dn,num); ,第七章 函数和变量,7.4 参数及传递方式,数组名作函数参数,#includestdio.h void A

57、DD1(int a,int n) int i; for(i=0;in;i+) ai+; main() static int array=0,1,2,3,4,5,6,7,8,9; int i; ADD1(array,10); for(i=0;i10;i+) printf(%d,arrayi); ,第七章 函数和变量,7.4 参数及传递方式,函数的嵌套调用 即一个函数可以被其他函数调用,也可调用其他函数。 函数的递归调用 直接递归调用: 一个函数可直接调用该函数本身。 间接递归调用: 一个函数可间接调用该函数本身。,第七章 函数和变量,7.5 嵌套和递归调用,函数的嵌套调用,#includestd

58、io.h int SADD(int n) int i,sum=0; for(i=1;i=n;i+) sum+=i; return(sum); int smul(int n) int m,d; m=SADD(n); d=2*m-1; eturn(d); ,main() int i,n,d; int flag; printf(Input a number:); scanf(%d, ,第七章 函数和变量,7.5 嵌套和递归调用,直接递归调用,float func(n) int n; int m; float f; f=func(m); ,第七章 函数和变量,7.5 嵌套和递归调用,间接递归调用,func1(n) int n; int; func2(m); ,func2(x) int x; inty; func1(y); ,第七章 函数和变量,7.5 嵌套和递归调用,函数的递归调用,#includestdio.h main() int n; long int result; long int fact(int); while(1) p

温馨提示

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

评论

0/150

提交评论