C语言完整课件资料.ppt

上传人:牧羊曲112 文档编号:5426298 上传时间:2023-07-05 格式:PPT 页数:100 大小:414.50KB
返回 下载 相关 举报
C语言完整课件资料.ppt_第1页
第1页 / 共100页
C语言完整课件资料.ppt_第2页
第2页 / 共100页
C语言完整课件资料.ppt_第3页
第3页 / 共100页
C语言完整课件资料.ppt_第4页
第4页 / 共100页
C语言完整课件资料.ppt_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《C语言完整课件资料.ppt》由会员分享,可在线阅读,更多相关《C语言完整课件资料.ppt(100页珍藏版)》请在三一办公上搜索。

1、C语言程序设计,第1章 概论第2章 数据类型、运算符与表达式第3章 顺序结构程序设计第4章 选择结构程序设计第5章 循环结构程序设计第6章 数组第7章 函数第8章 指针第9章 结构体与共用体第10章 文件第11章 综合应用实例,第1章 概 论,C语言是美国贝尔实验室于20世纪70年代初研制出来的,早期主要用于UNIX操作系统,到了20世纪80年代,C语言开始用于其它操作系统,并很快在各类大、中、小和微型计算机上广泛使用,成为国际上广为流行的计算机程序设计高级语言。本章主要介绍C语言的特点,C语言程序的结构与书写规则,C程序上机步骤,编译预处理,算法的概念及表示。,1-1,返回目录,1.1 语言

2、的特点 1语言简洁、紧凑,使用方便、灵活2运算符丰富3数据类型丰富4程序设计结构化、模块化5语法限制不太严格,程序设计自由度大6C语言允许直接访问物理地址,能进行位(bit)操作7生成的目标代码质量高,程序执行效率高8可移植性好,1-2,1.2 C语言程序的结构与书写格式,1.2.1 C语言程序举例 1.2.2 C语言程序的结构 1.2.2.1 函数是语言程序的基本单位。1.2.2.2 函数的一般结构 任何函数(包括main()函数)都是由函数首部和函数体两部分组成。1.函数首部:函数首部即函数第一行,由函数类型、函数名和函数参数表三部分组成。2.函数体:函数体为函数首部下面的花括号内的部分。

3、函数体一般由声明部分和执行部分构成:声明部分定义所用到的变量,声明所调用的函数等;执行部分有若干语句组成。,1-3,1.2.2.3 C语言程序的执行 C语言程序总是从main()函数的第一条执行语句开始执行,执行完main()函数的最后一 条语句,则整个程序执行结束,而其他函数则通过嵌套调用得以执行。,1.2.3 C语言程序书写格式 1.行的书写格式自由,可从一行的任何位置开始书写。2.一行可书写多条语句,一条语句也可分写在几行上。3.所有语句都必须以分号“;”结束。4.允许使用注释。C语言的注释格式有两种:/,/*/。5.在书写程序时,通常采用缩格形式书写分层结构的程序。,1-4,1.3 C

4、程序上机步骤C源程序编好后,要经过编辑、编译、连接,生成可执行文件后,才可运行。,1-5,1.4 编译预处理 编译预处理是指,在C编译程序对C源程序进行编译之前,由编译预处理程序对源程序中的预处理命令进行处理的过程。1.4.1 宏定义 用一个标识符来表示一个字符串,称为“宏”,标识符称为“宏名”。在程序中用宏名替代字符串称为“宏调用”。在编译预处理时,将对程序中所有出现的“宏名”,都用宏定义中的字符串代换,这个过程称为“宏展开”。1.4.1.1 不带参数的宏定义 格式为:#define 标识符 字符串 1.4.1.2 带参数的宏定义 格式为:define 宏名(参数表)字符串 1.4.2 文件

5、包含 文件包含是指在一个文件中,去包含另一个文件的全部内容。格式为:#include 或#include 文件名,1-6,1.5 算法的概念及表示 1.5.1 算法的概念 为解决一个问题而采取的方法和步骤,称为算法。计算机能够执行的算法,称为计算机算法,它有以下特性:有穷性。确定性。输入。输出。有效性。1.5.2 算法的表示 1.5.2.1 用自然语言表示算法 自然语言就是人们日常使用的语言。1.5.2.2 用流程图表示算法 流程图是用一些图框表示各种操作,用图形表示算法。,1-7,第2章 数据类型、运算符与表达式,数据是程序处理的基本对象,由数据和运算符一起组成的表达式是计算机语言中最基本的

6、计算成分。本章主要介绍基本数据类型:整型,实型,字符型;常用运算符:算术运算符,赋值运算符,逗号运算符,以及相应的表达式。,2-1,返回目录,2.1 数据类型 C语言的数据类型非常丰富,可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。,2-2,数据类型,2.2 常量与变量 2.2.1 标识符 标识符是用来标识符号常量名、变量名、函数名、数组名、类型名、文件名的有效字符序列,由字母、数字、下划线组成,且第一个字符必须为字母或下划线。2.2.2 常量2.2.2.1 字面常量(直接常量)字面常量是直接表示的常量。2.2.2.2 符号常量 符号常量是用一个标识符代表一个常量,使用编译预处理

7、命令#define定义,定义格式为:#define 常量名 字面常量,2-3,2.2.3 变量 在程序运行过程中,其值可以改变的量称为变量。C语言规定,变量要先定义后使用。变量的定义一般在函数的声明部分,格式为:数据类型 变量名1,变量名2,;变量的三个要素:变量名。变量值。变量的地址.2.2.4 变量的初始化 在定义变量的同时给变量赋以初值,称为变量初始化,出现在函数体的声明部分,格式为:数据类型 变量1=值1,变量2=值2,;,2-4,2.3 整型数据 2.3.1 整型常量 在C语言中,整型常量有三种表示形式:十进制,数码为09。八进制(以数字0开头),数码为07。十六进制(以数字0 x或

8、0X开头),数码为09,AF或af。在C语言中,整型常量可分为三种类型:基本整型。无符号基本整型(在数值后面加U或u)。长整型(在数值后面加L或l。,2-5,2.3.2 整型变量 根据占用内存字节数的不同,整型变量分为三类:(1)基本整型,以int表示。(2)短整型,以short int或short表示。(3)长整型,以long int或long表示。根据在内存中的存储形式,整型数据又分为有符号和无符号两种。,2-6,整型数据的分类,2.3.3 整型数据的溢出 如果在数据处理时,超出了变量的取值范围,就会发生“溢出”现象。,2.4 实型数据 2.4.1 实型常量 实型常量即实数,在C语言中又称

9、浮点数,其值有两种表达形式。十进制小数形式,有数字和小数点组成,要求小数点的两边必须有数。指数形式,格式为 E(e),2-7,2.4.2 实型变量 C语言的实型变量分为三种:单精度型(float)、双精度型(double)、长双精度型(long double),实型数据在内存中是按指数形式存储的。,2-8,实型数据的分类,2.5 字符型数据 2.5.1 字符常量 用一对单引号括起来的单个字符,称为字符常量。C语言中有一种称为“转义字符”的特殊形式的字符常量,转义字符以反斜杠“”开头,将“”后面的字符转换为另外的含义。,2-9,转义符,2.5.2 字符变量 字符变量用来存放字符常量,关键字为ch

10、ar,只能存放一个字符,占用1个字节内存单元。字符数据在内存中存储的是字符的ASCII码(一个无符号整数),其形式与整数的存储形式一样,表示范围是:0255。在C语言中允许字符型数据与整型数据之间通用。,2-10,2.6 算术运算符和算术表达式2.6.1 运算符及表达式简介2.6.1.1 运算符 C语言中的运算符具有2个特点:运算符的优先级 C语言中,运算符的优先级共分为15级,1级最高,15级最低。运算符的结合性 C语言中各运算符的结合性分为左结合性(从左到右)和右结合性(从右到左)。2.6.1.2 表达式 表达式是由常量、变量、函数和运算符组成的式子。表达式求值是按运算符的优先级和结合性规

11、定的顺序进行的。,2-11,2.6.2 算术运算符和算术表达式2.6.2.1 基本的算术运算符 基本算术运算符均为双目运算,有5种:加法运算符“+”、减法运算符“-”、乘法运算符“*”、除法运算符“/”、求余运算符或模运算符“%”。用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子称为算术表达式,运算对象包括常量,变量、函数等。如果一个运算符两侧的运算对象数据类型不同,要先利用自动类型转换或强制类型转换,使运算对象具有同一种数据类型,然后才能进行运算。,2-12,2.6.2.2 类型转换 数据的类型是可以转换的。1.自动转换 如果一个运算符两侧运算对象的数据类型不同,则

12、系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。2.强制类型转换 强制类型转换是通过类型转换运算符来实现的,一般形式为(类型名)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。,2-13,自动转换规则,2.6.2.3 自增(+)、自减(-)运算符 自增运算符(+)使单个变量的值增1,自减运算符(-)使单个变量的值减1,格式为 前置:+i,-i 在使用i之前,使i的值加(减)1 后置:i+,i-在使用i之后,使i的值加(减)1,2-14,2.7 赋值运算符和赋值表达式2.7.1 赋值运算符 赋值运算符是“=”,它的作用是将一个数据

13、或一个表达式的值赋给一个变量,赋值运算符的一般形式如下:变量=表达式2.7.2 复合的赋值运算符 复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的,一般格式如下:变量 双目运算符=表达式 它等价于:变量=变量 双目运算符(表达式)。5个复合算术运算符:和赋值“+=”,差赋值“-=”,积赋值“*=”,商赋值“/=”,模赋值“%=”。由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式,它的一般形式为 赋值表达式的值为被赋变量的值。,2-15,2.8 逗号运算符和逗号表达式 在C语言中,逗号“,”也是一种运算符,称为逗号运算符,它把若干个表达式连接起来组成一个表达式,称为逗号表达

14、式,一般形式为 表达式1,表达式2,表达式n逗号表达式的求解过程是:从左到右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值。,2-16,在第一章介绍了C语言程序的结构,在第二章介绍了构成程序的基本成份:常量、变量、基本数据类型、常用运算符及表达式,本章将介绍C语句概述,数据的输入与输出,顺序结构程序设计。,3-1,第3章 顺序结构程序设计,返回目录,3.1 C语句概述 C语句用“;”做为结束,其作用是向计算机系统发出操作指令。3.1.1 控制语句 C语言有9种控制语句。if()else(条件语句)switch(开关语句)for()(循环语句)while()(循环语句)dowh

15、ile()(循环语句)continue(结束循环语句)break(中止执行switch语句或结束本次循环语句)goto(无条件转向语句)return(从函数返回语句),3-2,3.1.2 函数调用语句 函数调用语句由一次函数调用加一个分号“;”组成。3.1.3 表达式语句 表达式语句由表达式加一个分号“;”组成,其一般形式如下:表达式;3.1.4 复合语句 复合语句由花括号 把多条语句括起来组成。3.1.5 空语句 只有一个分号“;”组成的语句,称为空语句,它什么也不执行,用作被转向点或循环语句中的循环体。,3-3,3.2 数据的输入输出 3.2.1 字符数据的输入输出3.2.1.1 putc

16、har()函数(字符输出函数)putchar()函数是字符输出函数,其一般形式为:putchar(c)功能:向显示器输出一个字符。3.2.1.2 getchar()函数(字符输入函数)getchar()函数是字符输入函数,其一般形式为:getchar()功能:从键盘输入一个字符。,3-4,3.2.2 printf()函数(格式输出函数)3.2.2.1 printf函数()(格式输出函数)的格式 printf()函数是格式输出函数,其一般格式如下:printf(格式控制字符串,输出表列);功能:按指定格式向终端(显示器)输出若干任意类型的数据。3.2.2.2 printf()函数的格式字符 1.

17、d,i格式字符,按带符号的十进制形式输出整数,正数不输出符号,常用d。%d,按整型数据的实际长度输出。%md,m代表一个正整数,m为指定输出数据的宽度。若数据位数小于m,则左端补以空格;若数据位数大于m,则按实际位数输出。%-md,m代表一个正整数,m为指定输出数据的宽度。若数据位数小于m,则右端补以空格;若数据位数大于m,则按实际位数输出。%ld,输出长整型数据。对长整型数据,可再使用m指定输出数据的宽度。,3-5,2.o格式字符,按八进制形式输出整数,用法同d格式字符。3.x(或X)格式字符,按十六进制形式输出整数,用法同d格式字符。4.u格式字符,按无符号十进制形式输出整数,用法同d格式

18、字符。5.c格式字符,输出一个字符。%c,输出一个字符。%mc,m代表一个正整数,m为指定输出数据的宽度,左端补以空格。%-mc,m代表一个正整数,m为指定输出数据的宽度,右端补以空格。6.s格式字符,输出一个字符串。%s,输出一个字符串%ms,m代表一个正整数,输出的字符串占m列,如果字符串本身长度大于m,则将字符串全部输出;如果串长小于m,则左补空格。%-ms,m代表一个正整数,输出的字符串占m列,如果字符串本身长度大于m,则将字符串全部输出;如果串长小于m,则右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左补空格。如果nm,则m自动取n值即保证

19、n个字符正常输出。%-m.ns,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。%.ns,只指定了n,没指定m,自动使mn。,3-6,7.f格式字符,按小数形式输出实数。%f,整数部分全部如数输出,并输出6位小数。但并非全部数字都是有效数字,单精度实数的有效位数一般为7位,双精度实数的有效位数一般为16位。%m.nf,指定输出的数据共占m列,其中有n位小数,自动四舍五入。如果数值长度小于m,则左端补空格。%-m.nf,指定输出的数据共占m列,其中有n位小数,自动四舍五入。如果数值长度小于m,则右端补空格。%.nf,只指定了n,没指定m,自动使m等于数据应占的长度。8.e(或E)格式

20、字符,以指数形式输出实数。%e,系统自动给出6位小数,共13位。%m.ne,用法同f格式字符。%-m.ne,用法同f格式字符。%.ne,用法同f格式字符。9.g(或G)格式字符,根据数值大小,自动选f或e。,3-7,3.2.3 scanf()函数(格式输入函数)3.2.3.1 scanf()函数(格式输入函数)的格式 scanf()函数是格式输入函数,其一般格式如下:scanf(格式控制字符串,地址列表);功能:按指定的格式从终端(键盘)上把数据输入到指定的变量之中。3.2.3.2 scanf()函数的格式字符 scanf()函数的格式字符与printf()函数类似,有d,o,x,u,c,s,

21、f,e,使用方式亦与printf()函数类似,这里介绍常用的格式字符d、c、f的使用。1.d格式字符,用来输入有符号的十进制整数。%d,输入有符号的十进制整数。%md,m代表一个正整数,指定输入数据占m列。%*d或%*md,表示跳过指定的输入项或指定的m列。%ld,输入长整型数据。,3-8,2.c格式字符,用来输入单个字符。%c,输入一个字符。%*c,表示跳过指定的输入项。3.f格式字符,用来输入实数,可以用小数形式或指数形式输入。%f,用小数形式或指数形式输入实数。%lf,用于输入double型数据。%*f,表示跳过指定的输入项。,3-9,3.3 顺序结构程序设计3.3.1 顺序结构程序设计

22、概述 在顺序结构程序中,各语句是按照位置的先后次序,顺序执行的,且每条语句都会被执行到。,3-10,#include#include void main()变量定义;输入数据 数据运算部分 输出部分,顺序结构程序的组成,3.3.2 顺序结构程序设计示例,第4章 选择结构程序设计,选择结构是C语言的三种基本结构之一。在数据处理过程中,经常需要根据不同的条件,完成不同的处理。例如,输出a和b两个数中的较大数。要求当a大于b时,输出a;否则,输出b。对于这种根据一定的条件选择执行路径的问题,要用选择结构来解决。本章主要介绍条件语句中“条件”的产生与表达,两种条件语句(if语句和switch语句)的使

23、用。,4-1,返回目录,4-2,4.1 关系运算符和关系表达式 4.1.1 关系运算符 C语言的关系运算符一共有6种,关系运算符的结合性是自左至右。算术运算符、关系运算符、赋值运算符的运算次序为:算术运算符关系运算符赋值运算符。,高低,4.1.2 关系表达式 关系表达式:用关系运算符将两个表达式连接起来的式子,称为关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”,当关系表达式成立时,其值为“真”,不成立时,其值为“假”。C语言中没有逻辑型数据,而是用“1”表示“真”,用“0”表示“假”。在判断一个值是否为真时,只有“0”被认为是假,所有非“0”值均被认为是“真”。,4-3,4.2.1

24、逻辑运算符 C语言的逻辑运算符一共有3种。,4-4,4.2 逻辑运算符和逻辑表达式,其中,“!”是单目运算符,只要求有一个运算量;“&”和“|”是双目运算符,要求运算符的两边均有运算量(操作数。逻辑运算符的结合性自左至右。算术运算符、关系运算符、逻辑运算符、赋值运算符的运算次序为:!算术运算符关系运算符&|赋值运算符。,4.2.2 逻辑表达式 逻辑表达式:用逻辑运算符将关系表达式和逻辑量连接起来的式子,称为逻辑表达式。逻辑表达式的值是一个逻辑值,即“真”或“假”。逻辑运算符的运算规则:“!”:取运算对象的逻辑值的相反值。“&”:只有当参加运算的两个逻辑值都为真时,结果才为真(1)。“|”:只有

25、当参加运算的两个逻辑值都为假时,结果才为假(0)。注意:当“&”运算符左边的表达式的值已是0时,右边的表达式不再求解,其表达式的结果为0;当“|”运算符左边的表达式的值已是1时,右边的表达式不再求解,其表达式的结果为1。,4-5,选择结构包括单分支选择结构、双分支选择结构和多分支选择结构。,4-6,4.3 选择结构的控制语句,4.3.1 单分支选择结构 单分支选择结构是C语言最简单的选择结构,语句格式:if(表达式)语句块 语句的执行过程是:计算if关键字后面小括号内的表达式的值,如果表达式的值为非0,则执行表达式后面的语句块;如果表达式的值为0,则不执行表达式后面的语句块,而直接执行if语句

26、后面的语句。语句块可以是一条语句,也可以是多条语句。如果是一条语句,则花括号“”可以省略。,4-7,4.3.2 双分支选择结构 4.3.2.1 if else 语句 双分支选择结构是C语言最典型的选择结构,其语句格式是:if(表达式)语句块1 else 语句块2 语句的执行过程是:计算if关键字后面小括号内的表达式的值,如果表达式的值为非0,则执行表达式后面的”语句块1”;如果表达式的值为0,则执行else后面的“语句块2”。“语句块1”和“语句块2”可以是一条语句,也可以是多条语句。如果是一条语句,则花括号“”可以省略。,4-8,4.3.2.2 条件运算符 在双分支选择结构if else 中

27、,如果在表达式为“真”或“假”时,“语句块1”和“语句块2”都只执行一个单一的赋值语句,并且都是给同一个变量赋值,则可以用简单的条件运算符来处理。条件运算符是一个三目运算符,运算时需要有三个运算对象。由条件运算符和相应的运算对象构成的表达式,称为条件表达式。条件表达式的一般形式是:表达式1?表达式2:表达式3 执行过程是:先求解“表达式1”的值,若“表达式1”的值为真(非0),则整个表达式的值为“表达式2”的值;若“表达式1”的值为假(0),则整个条件表达式的值为“表达式3”的值。注意:条件运算符的优先级高于赋值运算符,但低于关系运算符和逻辑运算符;条件运算符的结合方向为自右至左;条件表达式不

28、能取代一般的if else 语句,只有当if else 语句中的两个分支语句都同时给一个变量赋值时才能替代;条件表达式中的表达式类型可以不同。,4-9,4-10,4.3.3 多分支选择结构 4.3.3.1 if else 的嵌套语句结构 在if语句中又包含一个或多个if语句,称为if语句的嵌套。一般有以下几种形式:if(表达式1)语句块1 else if(表达式2)语句块2 else if(表达式3)语句块3 else if(表达式n)语句块n else 语句块n+1 语句的执行过程是:依次判断if后面表达式是否成立,若成立,则执行其后对应的语句,然后跳到整个结构之外继续执行程序;如果所有的表

29、达式均不成立,则执行“语句块n+1”,然后继续执行后续程序。下图是语句的执行过程。,4-11,if(表达式1)if(表达式2)语句块1 else 语句块2 else 语句块3 if(表达式1)if(表达式2)语句块1 else 语句块2 else if(表达式3)语句块3 else 语句块4注意:else总是与它上面最近的尚未与else配对的if配对。,4-12,4.3.3.2 switch语句结构 当分支较多时,使用嵌套的if语句层数多,程序冗长而且可读性降低。此时可以考虑使用switch语句(称开关语句或多路分支语句)来处理多分支选择。语句格式:switch(表达式)case 常量表达式1

30、:语句1 case 常量表达式2:语句2 case 常量表达式3:语句3 case 常量表达式n:语句n default:语句n+1 语句的执行过程是:先计算表达式的值,然后逐个与case后面常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,就以此作为入口,执行switch结构中该入口后面的所有语句。当表达式的值与所有case后面的常量表达式的值均不相等时,则执行default后面的语句。,4-13,第5章 循环结构程序设计,循环结构是C语言的三种基本结构之一,也是程序流程控制中一种很重要的结构。在许多实际问题的处理中都要用到循环控制。几乎所有的应用程序都包含循环,它与顺序结构、选

31、择结构一起实现复杂结构的程序设计。本章主要介绍三种循环语句的作用及使用方法,循环嵌套的设计方法,continue语句和break语句在循环结构中的作用。,5-1,返回目录,5.1 循环结构概述 在处理实际问题时人们会发现,有些问题的处理过程是采用重复的动作来完成的。如,统计学生某一学期某门课程的平均成绩,对每一位学生成绩的输入和累加就是一个重复的过程。这种重复执行的过程在计算机的程序设计中称为循环。循环形式根据实际问题的不同,其表现形式也不同,有的是已知重复(循环)次数,如上面提到的统计学生某一学期某门课程的平均成绩,学生人数定了,重复计算(循环)的次数也就确定了;有的则不能预知重复(循环)次

32、数。C语言提供了三种实现循环过程的循环结构:当型循环(while语句)、直到型循环(dowhile语句)和for循环结构。,5-2,5.2 while循环语句 while语句的一般格式:while(循环条件表达式)循环体语句 语句的执行过程是:在执行while语句时,先对循环条件表达式进行计算,若其值为真(非0),则执行循环体语句,然后重复上述过程,直到条件表达式的值为假(0)时,循环结束,程序控制转至while语句的下一个语句。这种先判断循环条件的循环称为“当型”循环。,5-3,5.3 dowhile循环语句 dowhile语句的一般格式:do 循环体语句 while(循环条件表达式);语句

33、的执行过程是:先执行循环体语句,然后对循环条件表达式进行计算,若其值为真(非0),则重复上述过程,直到条件表达式的值为假(0)时,循环结束,程序控制转至while语句的下一个语句。与while语句相比,dowhile语句至少执行一次循环体。这种先执行循环体语句的循环称为“直到型”循环。,5-4,5.4 for循环语句 for语句是C语言提供的结构紧凑、使用广泛的一种循环语句,for语句的一般格式:for(表达式1;表达式2;表达式3)循环体语句 表达式1:通常用来给循环变量赋初值,一般是赋值表达式,通常称为“初始化表达式”。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。表达式2:

34、通常是循环条件,一般为关系表达式或逻辑表达式,通常称为“条件表达式”。表达式3:通常可用来修改循环变量的值,一般是赋值表达式。for语句的执行过程是:计算表达式1的值;计算表达式2的值,若其值为真,则执行循环体语句一次,然后执行第步;若为假,则结束循环,转到第(4)步;计算表达式3的值,然后转回第步重复执行;循环结束,执行for语句下面的一个语句。下图是for语句的执行过程。,5-5,5-6,5.5 流程转向语句 这一类语句不形成控制结构,只是简单地使程序执行流程从所在处转向另一处。5.5.1 break语句 在循环体中,break跳出循环体(即结束循环),执行循环体下面的语句。break只能

35、跳出它所在的那一层循环。语句格式为:break;5.5.2 continue语句 语句的功能是结束本次循环的执行,但不结束整个循环结构的执行过程。语句格式为:continue;5.5.3 goto语句 它的作用是使程序流程从所在处转向本函数内的某一处,程序必须指出转向的目的地,目的地用标号指出。goto语句的格式为:goto 语句标号;其中,标号必须是一个合法的标识符,它写在某一语句的前面,后跟一个冒号“:”,表示程序的流程将转向此语句。,5-7,1.三种循环语句在处理循环问题时,一般可以相互替代。2.对于循环次数确定的问题,用for语句实现比较简单。3.对于循环次数不确定的问题,可用whil

36、e语句或dowhile语句实现。4.while语句,先判断,后执行;dowhile语句,先执行,后判断。,5-8,5.6 几种循环的比较,在一个循环结构中又套着另一个完整的循环结构的形式,称为循环的嵌套。嵌套在循环结构内的循环结构称为内循环,外面的循环结构称为外循环。如果内循环体内又有嵌套的循环结构,则称为多重循环。while语句、dowhile语句和for语句都可以互相嵌套。在嵌套的循环结构中,要求内循环必须包含在外循环的循环体中,不允许出现内外层循环体交叉的情况。嵌套的循环结构的执行过程是:外层循环的循环变量每变化一次,内层循环的循环变量要从初值变到终值,其间也可以用break语句终止内、

37、外层循环。,5.7 循环结构的嵌套,在前面章节中介绍的数据类型都是简单类型,每个变量只能取一个值,但在处理实际问题时,经常需要处理成批的具有相同数据类型的数据,对于这些具有相同类型且相关的数据可以用数组表示和处理。本章主要介绍一维数组的定义及使用,二维数组的定义及使用,字符数组的定义及使用。,6-1,第6章 数组,返回目录,一个数组就是一组变量,其中每一个变量称为一个数组元素,数组元素应该满足下列条件:具有相同的名字;具有相同的数据类型;在存储器中连续存放。数组元素可以是基本数据类型或者构造类型。根据数组元素类型的不同,数组可分为数值数组、字符数组、指针数组、结构体数组等多种类型。在C语言中,

38、数组的使用和普通变量的使用类似,必须“先声明,后使用”。6.2 一维数组 6.2.1 一维数组的定义 数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。定义格式如下:类型说明符 数组名常量表达式;,6-2,6.1 数组的概念,对一维数组的定义注意以下几点:1.类型说明符说明数组的类型,实际上是指数组元素的类型,同一个数组中,所有元素的数据类型是一致的;2.数组名的命名规则应遵循标识符的命名规则;3.数组名后是方括号,而非圆括号();4.常量表达式表示元素的个数,即数组长度。常量表达式应是整型表达式。5.常量表达式中可以使用常量和符号常量,但不能包含变量,

39、即C不允许对数组的大小作动态定义。6.2.2 一维数组的初始化 6.2.2.1 一维数组的存储结构 数组在定义之后,其元素在内存中是连续存放的,下图是char name5在内存中的存放情况。,6-3,6-4,数组名代表这一段内存的起始地址,由于一个字符在内存中占有一个字节,而每一个字符数组元素只能存放一个字符,所以可以根据元素的下标和元素的起始地址计算出某一个元素的内存地址,从而实现数组元素的随机访问,计算公式如下:数组元素地址=数组起始地址+元素下标*每个数组元素所占字节数假设name在内存中的起始地址为2000,则name4的地址为:2000+4*1=2004。6.2.2.2 一维数组的初

40、始化 给所有元素赋初值 如:int a5=0,1,2,3,4;可以只给一部分数组元素赋初值 如:int a10=0,1,2,3,4;在对全部数组元素赋初值时,可以不指定数组长度 如:int a=0,1,2,3,4;省略数组长度,系统将根据所给出的数据个数自动确定数组的长度,即数组长度与数据个数相同。要想使数组中所有的数组元素值都为0,则采用如下形式:int a10=0,0,0,0,0,0,0,0,0,0;或int a10=0;,6.2.3 一维数组元素的引用 数组元素的引用是指在程序中使用数组中各元素的过程。其格式如下:数组名下标 下标是指所要访问的数组元素在数组中的位置,它与定义数组时所指定

41、的数组大小不同,它可以是整型的常量,也可以是已赋值的整型变量。C语言规定数组的下标从0开始编号,因此最后一个元素的下标为数组的长度减1。说明:数组元素的引用与同类型的一般变量使用方式一样。但需注意:下标不能超出范围。如定义了“int a10;”,同时又引用a10,就出界了。而系统对下标的越界不做检查和处理,所以处理元素时要做好对其下标的控制,以免产生意想不到的结果。数组的每一个元素相当于一个普通变量,因此,数组元素只能逐个引用(字符数组除外),而不能一次引用整个数组。如果要引用数组中的全部元素,通常借助for循环语句,逐个引用数组中的每一个元素。6.2.4 一维数组的应用 程序设计中,利用一维

42、数组进行批量数据处理的问题十分普遍,其中在数组中查找数据、从数组中删除数据、对数组的元素进行排序、向数组中插入一个数据等操作是最基本的数据处理算法。,6-5,一维数组中的每一个数组元素的下标只有一个,所以一维数组只可以对一组相关数据做处理。当要处理多组相关的数据时,如数学上的矩阵、9*9乘法表等,都需要用二维格式的形式存储。当每一个数组元素有两个或两个以上下标时,该数组称为多维数组。数组元素有两个下标时称为二维数组。C语言中涉及到的最多的多维数组是二维数组。6.3.1 二维数组的定义 二维数组定义的一般形式如下:类型说明符 数组名常量表达式1常量表达式2;“常量表达式1”表示第1维下标的长度,

43、也就是二维格式的行数;“常量表达式2”表示第2维下标的长度,也就是二维格式的列数。6.3.2 二维数组的初始化 6.3.2.1 二维数组的存储结构 二维数组的逻辑结构是由若干行和若干列组成的,不象一维数组只是线性的。但二维数组在计算机中却是连续存储的,即存储单元是线性排列的。与一维数组一样,数组元素的各维下标也是从0开始,最大下标为“该维的常量表达式值减1”。,6-6,6.3 二维数组,在C语言中,二维数组的存放形式是按行存放,即存完第一行的数据,依次存放第二行的数据,第三行的数据等等。如定义了“int scores34;”,则逻辑结构展开为 scores00,scores01,scores0

44、2,scores03 scores10,scores11,scores12,scores13 scores20,scores21,scores22,scores23 6.3.2.2 二维数组的初始化 与一维数组一样,二维数组也是在定义数组时给数组各元素赋初值。按行给二维数组赋初值。如:int a23=1,2,3,4,5,6;按数组的排列顺序对各数组元素赋初值(所有数据写在一个花括号内)。如:int b23=1,2,3,4,5,6;可以对部分数组元素赋初值。如:int c34=1,5,9;在对全部数组元素赋初值时,数组第一维的长度可以不指定。但其它维必须指定,系统会自动根据所给的初值和其它维的下

45、标值来确定第一维下标的长度。如:int e 3=1,2,3,4,5,6;,6-7,6.3.3 二维数组元素的引用 二维数组元素引用的一般格式如下:数组名下标1下标2;如果定义了“int a55;”,则下面是对a数组元素的合法引用。6.3.4 二维数组的应用6.4 字符数组 数组中所有的元素都是字符型数据,这样的数组称为字符数组。也就是说,字符数组是专门用来存放字符的,且数组的每个元素只能存放一个字符。字符数组的定义及初始化与一般数组相同。6.4.1 字符数组的定义 定义一维字符数组:char 数组名常量表达式;如:char c10;表示定义一个一维字符数组c,其中可以存放10个字符。定义二维字

46、符数组:char 数组名常量表达式1常量表达式2;如:char names510;表示定义一个二维字符数组names,共有5行,一行存放一个姓名,总共可以存放5个人的姓名,其中每一个人的姓名不能超过10个字符。,6-8,6.4.2 字符数组的初始化 给所有元素赋初值 如:char c5=h,a,p,p,y;可以只给一部分数组元素赋初值 如:char c10=h,a,p,p,y;在对全部数组元素赋初值时,可以不指定数组长度。如:char c=h,a,p,p,y;字符串与字符数组 用一对双引号(“)括起来的若干字符序列称为字符串。字符串中字符的个数称为字符串长度。C语言规定,在存储字符串常量时,由

47、系统在字符串的末尾自动加一个“0”作为字符串的结束标志。字符数组的输入与输出 6.4.4.1 每一个数组元素逐个进行输入与输出 在scanf()函数和printf()函数中使用格式符“%c”利用putchar()和getchar()库函数 6.4.4.2 所有字符作为一个字符串进行输入与输出 在scanf()函数和printf()函数中使用格式符“%s”利用字符串输入gets()和输出puts()函数,6-9,6.4.5 字符数组的应用 6.4.6 常用的字符串处理函数 使用字符串处理函数,需要在程序中包含头文件“string.h”。strcat(字符数组1,字符数组2)这是一个字符串连接函数

48、。其作用是连接两个字符数组中的字符串,将字符数组2中的字符串接到字符数组1的字符串的后面,结果放在字符数组1中,函数返回字符数组1的地址。6.4.6.2 strcpy(字符数组1,字符数组2)这是一个字符串复制函数。其作用是将字符数组2中的字符串内容复制到字符数组1中。函数的返回值是字符数组l的起始地址。6.4.6.3 strlen(字符串)这是一个求字符串长度的函数。其作用是计算字符串的长度。函数的返回值是字符串的实际长度,即第一个“0”前的所有字符的个数。字符串的长度不包括字符串中的最后一个结束符“0”。6.4.6.4 strcmp(字符串1,字符串2)这是一个字符串比较函数。其作用是比较

49、两个字符串的大小。字符串比较的依据是字符所对应的ASCII码。strcmp函数的返回值:若字符串1字符串2,则strcmp()函数的返回值大于0;若字符串1=字符串2,则strcmp()函数的返回值等于0;若字符串1字符串2,则strcmp()函数的返回值小于0。,6-10,第7章 函数,一个C程序往往由多个函数组成,每个函数具有一定的功能,通过函数之间的调用来完成整个程序的任务。本章主要介绍函数的概述、函数的定义、函数参数和函数值、函数的调用、函数的嵌套调用和递归调用、数组作函数的参数、局部变量和全局变量、动态存储变量和静态存储变量。,7-1,返回目录,7.1 概述,7.1.1 C语言程序结

50、构一个C程序由一个或多个源程序文件组成,一个源程序文件由一个或多个函数组成;每个源程序以一个文件形式存储,并以文件为单位进行编译。在C语言中,所有函数定义,包括main()函数在内,都是平行的,独立的。函数之间可以相互调用,也可以嵌套调用,函数还可以自己调用自己。习惯上把调用者称为主调函数,把被调用者称为被调函数。main()函数是主函数,是系统定义的,它可以调用其他函数,但不允许被其他函数调用。C程序的执行总是从main()函数开始,调用其他的函数后返回main()函数,并在main()函数中结束整个程序的执行。,7.1.2 函数的分类库函数和用户定义函数有返回值函数和无返回值函数无参函数和

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号