C程序设计 教学课件 ppt 作者 赵山林 9

上传人:E**** 文档编号:89343339 上传时间:2019-05-23 格式:PPT 页数:51 大小:360.50KB
返回 下载 相关 举报
C程序设计 教学课件 ppt 作者  赵山林 9_第1页
第1页 / 共51页
C程序设计 教学课件 ppt 作者  赵山林 9_第2页
第2页 / 共51页
C程序设计 教学课件 ppt 作者  赵山林 9_第3页
第3页 / 共51页
C程序设计 教学课件 ppt 作者  赵山林 9_第4页
第4页 / 共51页
C程序设计 教学课件 ppt 作者  赵山林 9_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《C程序设计 教学课件 ppt 作者 赵山林 9》由会员分享,可在线阅读,更多相关《C程序设计 教学课件 ppt 作者 赵山林 9(51页珍藏版)》请在金锄头文库上搜索。

1、第9章 数组,9.1 数组的概念 9.2 一 维 数 组 9.3 多维数组的定义和使用 9.4 字符数组及字符串 9.5 数组作函数参数,9.1 数组的概念,数组是指一组相同类型数据的有序集合,由一个统一的数组名标识这一组数据。数组的每一个成员称作数组元素,用下标来标识数组元素在该数组中的位置。,把数学中的集合和数组对照一下。 假如有集合 s=1,2,3,4,5,6,7,8,9,10 要表示集合中某个元素,数学中可以描述为si ,其中s是集合的名字,i表示该元素在集合中的序号。为了表示C语言数组中的每一个元素,也必须确定数组名和该元素在数组中的位置信息。 数组名和该元素在数组中的位置信息是确定

2、数组元素两个不可缺少的要素。在C语言中,数组元素的位置信息是由下标表示的,下标等同于集合中的序号。,9.2 一 维 数 组,9.2.1 一维数组的定义 由单一下标标识数组元素的数组称为一维数组。 一维数组的定义形式为: 类型标识符 数组名元素个数; 数组名必须符合标识符的规定。元素个数,又称为数组长度,只能用整型常量表达式表示。 数组和变量一样,也必须占据一定的存储空间。进行存储空间分配时,系统根据数组的长度和数组元素的类型确定分配存储单元的个数,C语言中数组元素的存储是连续的,数组名就是所分配内存空间的起始地址。,如整型数组a,共有10个元素,每个元素分配2个字节,共分配210个字节的存储单

3、元,,图9.3 数组a的存储示意图,9.2.2 一维数组元素的初始化 数组初始化的一般形式如下: 类型标识符 数组名元素个数=元素值表列; (1)中的数组元素值与数组的每一个元素具备左对应关系。 (2)中的元素值表列,可以是数组所有的元素的初值,也可以是前面部分元素的初值,元素值之间使用逗号分割。 (3)当给数组部分元素赋初值时,其余元素的值为0。 (4)当对全部元素赋初值,数组长度可以省略,但 不能省略。 (5)数组初始化的赋值方式只能用于数组的定义,定义之后再赋值只能一个元素一个元素地赋值。,9.2.3 一维数组元素的引用 定义一个数组,相当于一次定义了许多变量。 一维数组元素的引用形式:

4、 数组名下标 例如:a0、ak、ai+1等。 下标可以是整型常量、整型变量或者整型表达式,其范围是0L 1(L表示数组长度)。 C语言不检查数组的边界。所以当引用数组元素的下标超越边界时,系统不会提示错误,但是可能导致其他变量甚至程序被破坏。,例9.1 数组元素引用示例。 示例1: main( ) int i, a10; for (i=0;i10;i+) scanf(“d“, ,9.2.4 一维数组举例 使用一维数组可以实现实际应用中的多种数学模型,如队列、数列、堆栈等数据结构。在一维数组中,数组中的各个元素都是相关联的,它们是相同数据类型的数据的集合。在实际应用中,程序设计者应注意分析数据间

5、的关系,合理地使用数组元素,才能编制出高效率的程序。本节从下面几个例子介绍一维数组的编程方法。,例9.2 利用数组求出Fibonacci数列的前40项。 在循环一章中讲述了利用变量计算Fibonacci数列之和的题目。数列的数据模型常用数组来表示。 main( ) int j; float f40; f0=1;f1=1; for(j=2;j40;j+) fj=fj-1+fj-2; for (j=0;j40;j+) printf(“10.0f“,fj); printf(“n“); ,例9.4 输入10个整数,输出最大值。 main() int array10,max,k; for(k=0;k10

6、;k+) scanf(“d“, ,例9.5 用选择法对N个数排序,图9.5 例9.5的流程图,#define N 10 main( ) int aN,min,temp,i,j; for (i=0;iaj) min=j; temp=amin;amin=ai-1;ai-1=temp; for(i=0;iN;i+) printf(“5d“,ai); printf(“n“); ,9.3 多维数组的定义和使用,9.3.1 多维数组的定义 1二维数组的定义 二维数组的定义形式为: 类型标识符 数组名行元素个数列元素个数; 行元素个数是数组的行数(假定用M表示),列元素个数是数组的列数(假定用N表示)。,例

7、如: int a23; 表示数组a由2行3列共6个整型元素组成。 二维数组中元素的存放顺序是按行存放的,即按顺序先存放第0行的数组元素,再存放第1行的数组元素。,2多维数组的定义 多维数组的定义类似二维数组的定义,格式为: 类型标识符 多维数组名元素个数1元素个数2元素个数n; 例如, float a102030;,9.3.2 二维数组元素的初始化 所谓初始化就是给数组元素赋初始值。 二维数组的初始化方法有以下几种形式。 (1)按行对二维数组初始化。 例如: int a23=1,1,1,4,4,4; (2)按数组的存储顺序赋初值。 例如: int b22=1,2,3,4; 表示将1初始化给b0

8、0,2初始化给b01,3初始化给b10,4初始化给b11。,二维数组初始化时,注意以下几点。 (1)对部分元素赋值,其余元素的值为0。 (2)如果对数组元素全部赋初值,定义数组时行长度可以省略,列长度不能省略。 (3)同一维数组一样,二维数组初始化的赋值方式只能用于数组的定义,定义之后再赋值只能单个元素赋值。,9.3.3 多维数组元素的使用 1二维数组中元素的引用形式 数组名下标1下标2,例9.6 二维数组元素引用示例。 main() int m,n; int x34,y34; for(m=0;m3;m+) for(n=0;n4;n+) xmn=m; for(m=0;m3;m+) for(n=

9、0;n4;n+) ymn=n; printf(array x:n); for(m=0;m3;m+) for(n=0;n4;n+) printf(3d,xmn); printf(n); printf(array y:n); for(m=0;m3;m+) for(n=0;n4;n+) printf(3d,ymn); printf(n); ,程序运行的结果如下: array x: 0 0 0 0 1 1 1 1 2 2 2 2 array y: 0 1 2 3 0 1 2 3 0 1 2 3,例9.8 分别求某班数学成绩、语文成绩的最高分、最低分和平均分。 设某班有N个学生,应该定义两个一维数组存储

10、该班的数学成绩和语文成绩。或者,定义一个二维数组存储该班的数学和语文成绩。例如,定义数组 float score2N;用第0行数组元素存储数学成绩,第1行数组元素存储语文成绩,列号表示学生的学号。 求最高分、最低分和平均分就是求成绩的最大值、最小值和平均值。定义另一个数组float result23,第0行数组元素、第1行数组元素分别存储数学、语文的最高分、最低分和平均分。具体算法如图9.9所示。,图9.9 例9.8的流程图,根据流程图编写程序如下。 #define M 2 /*功课门次 */ #define N 35 /*班级人数*/ #define K 3 /*三种成绩*/ main( )

11、 float sum,scoreMN; float max,min, resultMK; float t; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) scanf(“f“, ,for(i=0;iscoreij) min=scoreij; ,resulti0=max; resulti1=min; resulti2=sum/N; for (i=0;iM;i+) printf(“第d门课程的成绩:n“,i); printf(“最高分:.2f “,resulti0); printf(“最低分:.2f “,resulti1); printf(“平均分:.2f “,res

12、ulti2); pritnf(n); ,9.4 字符数组及字符串,字符数组是指数组元素是字符型数据的数组,它的每个数组元素能存储一个字符型数据。 9.4.1 字符数组的定义、引用及初始化 1字符数组的定义 字符数组的定义方法同前面介绍的整型、实型数组的定义相同。 例如: char s110,s2280; 表示定义s1是一维字符数组,s2是二维字符数组。,2字符数组和字符串的关系 C语言通过字符数组来描述字符串。如果某一字符数组中包含有字符0时,该字符数组可以作为字符串处理,此时,字符数组名类似于其他高级语言中的字符串变量名,简称串名。 在使用字符串时,程序设计者只需关心字符串的有效字符。字符数

13、组中0前的字符的个数就是字符串有效字符的个数,通常称为字符串长度。在前面章节中讲述过printf函数使用s格式输出字符串时,printf()函数判断输出是否结束的标志就是0。,3字符数组元素的初始化 (1)按字符方式初始化。 (2)把一个字符串赋给字符数组。 例如: char s120=“123abcd#tm“; /*数组长度是20,把字符串常量赋给字符数组*/ char s2=“123abcd#tm“; /*花括号可以省略*/ char s3320= “123“,“abdc“; /*2个字符串常量赋给二维字符数组*/,4字符数组元素的引用 可以单个引用字符数组元素,也可以将字符数组作为字符串

14、来使用。 (1)按数组元素引用。 具体引用形式如下。 数组名下标 例如: #include “stdio.h“ main() char f20; int k; for (k=0;k20;k+) scanf(“c“, ,(2)按字符串引用。例如: main() char str1128,str1128; scanf(“ss“,str1,str2); printf(“sn,sn“,str1,str2); ,9.4.2 字符串及字符串处理函数 下面介绍几个常用的字符串处理函数。 1字符串输入函数gets() gets()函数调用形式为: gets(字符数组名) 其功能是从终端输入一个字符串,并把该字

15、符串存储到字符数组中。,例如: #include “stdio.h“ main() char s128; gets(s); printf(“sn“,s); ,2字符串输出函数puts() puts()函数的调用形式为: puts(数组名) 或 puts(字符串常量),3字符串拷贝函数strcpy() strcpy()函数的调用形式为: strcpy(字符数组1,字符串2) 其功能是将字符串2复制到字符数组1。字符数组1只能是字符数组,字符串1既可以是字符数组,也可以是字符串常量。,4字符串连接函数strcat() strcat()函数的调用形式为: strcat(字符数组1,字符串2) 其功能是连接两个字符串,把字符串2连接到字符数组1后面,结果放到字符数组1中。,5字符串比较函数strcmp() strcmp()函数的调用形式为: strcmp(字符串1,字符串2) 其功能是比较两个字符串的大小。根据函数

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

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

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