C语言程序设计(第二版)-电子教案-王伟 第5章

上传人:E**** 文档编号:89382413 上传时间:2019-05-24 格式:PPT 页数:41 大小:217KB
返回 下载 相关 举报
C语言程序设计(第二版)-电子教案-王伟 第5章_第1页
第1页 / 共41页
C语言程序设计(第二版)-电子教案-王伟 第5章_第2页
第2页 / 共41页
C语言程序设计(第二版)-电子教案-王伟 第5章_第3页
第3页 / 共41页
C语言程序设计(第二版)-电子教案-王伟 第5章_第4页
第4页 / 共41页
C语言程序设计(第二版)-电子教案-王伟 第5章_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《C语言程序设计(第二版)-电子教案-王伟 第5章》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版)-电子教案-王伟 第5章(41页珍藏版)》请在金锄头文库上搜索。

1、第五章 数组,本章目录,5.1一维数组,5.2二维数组,5.3字符数组和字符串,5.4程序举例,5.1 一维数组,数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。,5.1.1 一维数组的定义,一维数组定义的格式为: 类型说明符 数组名常量表达式; 类型说明符,表示数组中的每个元素所共同具有的类型。数组名的命名规则符合标识符的书写。方括号内的常量表达式(或称数组下标)的值是数组的长度即数组所包含的元素个数。 例:int a10; 其中,int为类型说明符,表示数组中的每个元素都是整型类型,即数组中的每一个元素都为int类型;a是数组

2、名,常量表达式表示该数组共有10个元素。,5.1.1 一维数组的定义,使用数组使应注意如下几点: 1. 数组名的命名规则同变量,用标识符表示。 2. 常量表达式表示数组中元素的个数,即数组的长度。 3. 常量表达式只能用方括号括起来。常量表达式的值一定是正的整形常 量表达式,可以是常量、符号常量,但不能包含变量,即不允许对数组的长度作动态的定义。例如,下面对数组的定义是不允许的: int n; int an; 4. 相同类型的变量和数组可以共用一个类型说明符,它们之间用逗号分隔开,如: float a ,c10; 5. 数组名代表该数组在内存中的起始地址。如 int a4;一个整型变量在内存中

3、占2个字节,编译系统为数组a开辟连续8个字节的存储空间, a,&a0都表示数组a的起始地址(首地址)。,5.1.2一维数组的引用, 数组应先定义,然后才能使用。C语言中,只能逐个引用数组的元素,而不能整体引用数组。 数组元素的表示形式为: 数组名下标 其中:下标可以是整形常量、整形变量及其表达式。C语言中的下标从0起始,当数组的长度为n时,下标的取值范围为0,1,2,n-1。下标的值不能超过数组长度,5.1.2一维数组的引用,例5.1输入10个整数,求其中的最大值 main() int a10,i,max; for(i=0;imax) max=ai; printf(“max=%dn“,max)

4、; 输入23 98 -67 13 0 -3 106 -7 38 74 从上例看出数组元素只能逐个赋初值,比较的时候也是逐个进行比较,通过数组的下标来区分数组元素。,运行结果:,5.1.3一维数组的初始化, 数组元素的赋初值和普通变量一样,数组初始化的一般形式如下: 数据类型 数组名常量表达式=初值表; 对数组元素的赋初值有下面几种情况: 1.一维数组可以在定义时可以对全部数组元素进行初始化,数据间用逗号隔开。例如: int a6=1,3,5,7,9,11; 经过上述初始化后,a0=1,a1=3,a2=5,a3=7,a4=9,a5=11。在这种情况下,数组长度可以省略,即int a =1,3,5

5、,7,9,11;,5.1.3一维数组的初始化,2.可以对部分元素进行初始化,其余剩下的元素自动赋值为0。例如: int a6=1,2,3,4; 数组a共有6个元素,其中前4个依次为1,2,3,4,后面两个都为0。 3. 可以对所有数组元素赋值0,例如: int a5=0,0,0,0,0; 但不能写成 int a5=0*5; 注意:对数组初始化时,初始化值的个数可以小于或等于数组长度,但不能多余数组长度,否则会引起编译错误,5.1.4一维数组的应用,例5.2利用数组求Fibonacci数列问题 程序如下: main() int i; int f20=1,1; for(i=2;i20;i+) fi

6、=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0)printf(“n“); printf(“%8d“,fi); 运行结果:,5.1.4一维数组的应用,例5.3 用冒泡法对8个数排序 分析:排序过程: 1.比较第一个数与第二个数,若为逆序a0a1,则交 换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 2. 对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 3. 重复上述过程,共经过n-1趟冒泡排序后,排序结束,5.1.4一维数组的应用,#include main(

7、) int a9,i,j,t; printf(“Input 8 numbers:n“); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(“The sorted numbers:n“); for(i=1;i9;i+) printf(“%d “,ai); 运行结果:,5.2二维数组,5.2.1二维数组的定义 C语言允许定义和使用多维数组,本节以二维数组为 例介绍多维数组。二维数组主要用于处理矩阵和行列式。 二维数组定义的一般形式为: 类型说明符 数组名常量表达式1常量表达式2; 其中,常量表达式1表示第一维下标的长度,可以说指定数组元素的行数;常量表达式

8、2表示第二维下标的长度,可以说指定了数组元素的列数。,5.2二维数组,例如: int a34; 此定义说明数组a为3行4列,共有12个元素,每个元素都是整型。定义完二维数组后编译系统会为数组开辟一连串的存储空间,二维数组是按行存放即先放第0行的元素,之后是第1行 注意:二维数组元素的写法必须是用括起来。,5.2.2二维数组的引用,二维数组元素的引用形式如下: 数组名下标1下标2 下标可以是整型常量、整型变量或整型表达式。例如: int a6; a2=a1+5; ai=ai-1+ai-2;,5.2.3二维数组的初始化, 与一维数组类似,对二维数组进行初始化的方法有如下几种: 1按行给二维数组进行

9、初始化,每一行用一对花括号括起来。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 将所有的元素按顺序放置于一个花括号内。如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 编译系统自动先对行进行排列,在对列进行排序,结果和第一种是一样的。 可以只对部分元素赋初值。如: int a34=1,2,3,4,5,6,7,8,9; 未给出值的元素为0。 如果对所有元素都赋值,可以省略第一维的长度。例如: int a 4=1,28,13,54,50,69,27,48,39,24,56,7; 系统将根据第二维的长度对数据进行分配,每行4列,共3行。

10、若只对部分元素赋初值,并且省略第一维的长度,则必须分行赋初值。例如: int a 4=1,3,4,6,8,7;,5.2.4二维数组的应用,例5.3二维数组的输入输出 main() int i,j,a33; for(i=0;i3;i+) for(j=0;j3;j+) scanf(“%d“, 输入1 2 3 4 5 6 7 8 9 运行结果,例54求33矩阵主对角线之和 #include main() int a33,i,j,sum=0; for(i=0;i3;i+) for(j=0;j3;j+) scanf(“%d“, 输入数据 1 2 3 4 5 6 7 8 9 运行结果:,5.2.4二维数组

11、的应用,5.3字符数组和字符串, 字符数组是用来存放字符型数据的数组,字符数组中的每一个元素存放一个字符,字符数组可以存放字符串。,5.3.1字符数组的定义, 字符数组的定义与普通数组类似,形式为: 类型说明符 数组名常量表达式; 其中,char是字符型数据类型说明符,常量表达式表示数组的元素的个数,即数组的长度,字符数组的每一个元素存放一个字符。 例如: char c5; 定义字符数组c包含5个元素即5个字符,或者存放一个长度不大于5的字符串。 字符数组同样有二维和多维的,如: char c34; 定义了一个3行4列的字符数组。,5.3.2字符数组的初始化,字符数组的初始化与普通数组相似,可

12、以采用如下方式: 1依次对全部元素进行赋值。如: char c5= C,H,I,N,A; .对部分元素进行赋值。如: char c15= c,h,i,n,a ; 将5个字符赋给数组的前5个元素,其余的元素自动定为空字符(即0)。 .同样我们可以定义二位数组,如: Char c35= r, e,d, g,r,e,e, n, b,l,u,e ; . 以字符串常量的形式对字符数组赋初值。如: char s=“CHINA“; 大括号可以省略,由于“CHINA”是一个字符串,编译系统自动在最后一个字符的后面加上n,并把它一起存到字符数组中,所以数组s的实际长度是6个字节,而不是看上去的5个字节。初始化后

13、的数组s如下:,5.3.2字符数组的初始化,注意: 1)如果花括号中赋初值中字符的个数大于数组长度,则按语法错误处理。 2)不能对数组整体赋初值。如 char s10; s=“BEIJING“; 原因是s是数组的名字,数组名代表的数组的起始地址,是常量。,5.3.4字符数组的引用, 引用字符数组中的一个元素,可以得到一个字符。 例5.5输出一个字符串。 #include main() int i; char c12=a,C,p,r,o,g,r, a,m,!; for(i=0;i12;i+) printf(“%c“,ci); printf(“n“); 运行结果见图5.5:,图5.5,5.3.4字

14、符串及其常用函数,字符串是用双括号括起来的字符序列。在C语言中,没有专门的字符串变量,而在实际的编程工作中,字符串的应用又非常广泛,如:人的姓名、身份证号码、产品编号等,为了解决这个问题,我们使用字符数组来存放和处理字符串。 1.字符串的表示方式 字符数组的长度和字符串的有效长度很多时候是不同的,而 人们往往关心的是字符串的有效长度,为此,C语言规定以0作为字符串的结束标志,当遇到0时,表示字符串结束。 系统对字符串常量也自动加一个0作为结束标志。例如字符串“student”有7个字符,在内存却要占用8个字节,因为最后一个字节用来存放字符0。 从ASCII码表中可以查到,0的ASCII码为0,

15、它不是一个可以显示的字符,在字符串中仅作为字符串的结束标志。,5.3.4字符串及其常用函数, 2字符串的输入输出 字符串的输入输出有两种方式: 1) 使用”%c”格式符逐个字符输入输出,这种方式同一般数组的输入输出。 2) 使用”%s”将字符串整体输入输出 例如:char c =“program”; printf(“%s”,c); 使用字符串时,应注意以下几点: 1) 由于遇到字符”0”,字符串即结束,所以字符串的输出结果中并不包含”0”。 2) 在使用“%s”这种格式进行字符串的输入时,由于数组名表示数组的首地址,所以输入项使用数组名,不必在前面加”都是错的。输入字符串后,系统会自动添加串结束标志0 3) 在使用“%s”这种格式进行字符串的输出时,输出项也是使用数组名。,C语言规定,用scanf输入字符串时,以空格或回车键作为字符串的分隔符,因此若输入的字符串中包含空格

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号