一维数组.ppt

上传人:大张伟 文档编号:9299023 上传时间:2021-02-16 格式:PPT 页数:19 大小:424KB
返回 下载 相关 举报
一维数组.ppt_第1页
第1页 / 共19页
一维数组.ppt_第2页
第2页 / 共19页
一维数组.ppt_第3页
第3页 / 共19页
一维数组.ppt_第4页
第4页 / 共19页
一维数组.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《一维数组.ppt》由会员分享,可在线阅读,更多相关《一维数组.ppt(19页珍藏版)》请在三一文库上搜索。

1、第8讲,第5章 数 组,5.1 概念,5.2 一维数组,5.3 顺序查找,5.5 二维数组,计算机处理数据时,经常出现数据是用某种有序的形式进行组织的情况,例如: 随温度而改变的实验数据 按学号排列的成绩表 这些数据具有共同的特征: 都是由若干个分量组成 数据的各个分量都是同一类型 这些分量是按一定顺序排列的,概念,概念,未引进数组前处理多变量的方法,数据要存储就要定义量 定义的多个变量间彼此无关 每个变量必须进行单独处理,图5-1 定义20个变量,图5-2 处理20个变量,数组 数组的基本概念 一维数组的定义和引用,数组,构造数据类型之一 数组:有序数据的集合,用数组名标识 元素:属同一数据

2、类型,用数组名和下标确定 5.1 一维数组 一维数组的定义 定义方式: 数据类型 数组名常量表达式;,合法标识符,表示元素个数 下标从0开始, :数组运算符 单目运算符 优先级(1) 左结合 不能用( ),例 int a6;,编译时分配连续内存 内存字节数=数组元素个数* sizeof(元素数据类型),数组名表示内存首地址, 是地址常量,一维数组的引用 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素表示形式: 数组名下标 其中:下标可以是常量或整型表达式,例 int i=15; int datai; (不能用变量定义数组长度),例 int a10; printf(

3、“%d”,a); () 必须 for(j=0;j10;j+) printf(“%dt”,aj); (),例 int data5; data5=10; /C语言对数组不作越界检查,使用时要 注意,#include void main() int i,a10; for(i=0;i=0;i-) printf(“%d”,ai); printf(“n”); (),数组元素的下标常用循环控制变量来控制,一维数组的初始化 初始化方式,在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值),int a5=1,2,3,4,5; 等价于:a0=1; a1=2; a2=3; a3=4; a4=5;,说明: 数组

4、不初始化,其元素值为随机数 对static数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如 int a5=6,2,3; 等价于: a0=6; a1=2;a2=3; a3=0; a4=0; 如 int a3=6,2,3,5,1; (),static int a5; 等价于:a0=0; a1=0; a2=0; a3=0; a4=0;,只给部分数组元素赋初值,int a=1,2,3,4,5,6; 编译系统根据初值个数确定数组长度,注: 标准C只有静态(static)数组和外部存储(extern)数组才能初始化,但Turbo C和Microsoft C的编译系统中,自

5、动数组与外部存储数组均可以进行初始化,注意:若被定义数组长度与提供初值的个数不相同,则数组长度不能省略 如:int a10=1,2,3,4,例:数组初始化 void main() int a5=1,2,3,4,5; int b5=1,2,3; int c =1,2,3,4,5; static int d5; int e5; int i; for(i=0;i5;i+) printf(%d,ai);printf(n); for(i=0;i5;i+) printf(%d,bi);printf(n); for(i=0;i5;i+) printf(%d,ci);printf(n); for(i=0;i5

6、;i+) printf(%d,di);printf(n); for(i=0;i5;i+) printf(“ %d,ei);printf(n); ,程序举例,例 读10个整数存入数组,找出其中最大值和最小值,步骤: 1. 输入:for循环输入10个整数 2. 处理: (a) 先令max=min=x0 (b) 依次用xi和max,min比较(循环) 若maxxi,令min=xi 3. 输出:max和min,#include #define SIZE 10 main() int xSIZE,i,max,min; printf(Enter 10 integers:n); for(i=0;ixi) mi

7、n=xi; printf(Maximum value is %dn,max); printf(Minimum value is %dn,min); ,例:统计全班某门功课期末考试的平均分数和最高分数(设全班人数为30),用简单变量实现: #define N 30 void main() int i,sum=0,high=0,score; float average; printf(input score:n); for(i=0;ihigh) high=score; average=(float)sum/N; printf(average=%fn,average); printf(highest

8、=%dn,high); ,用数组实现,分析: 定义一个整型数组score30,存放全班每位同学的分数 用for循环读入分数,并求出总分和平均分 定义变量high存放当前得到的“最高分”,每得到一个分数都要与high的值比较,若比high大,则放入high中,这样最后high的值一定是最高分,用数组来实现 #define N 30 void main() int i,sum=0,high,scoreN; float average; printf(input score:n); for(i=0;ihigh) high=scorei; average=(float)sum/N; printf(av

9、erage=%fn,average); printf(highest=%dn,high); ,for(high=0,i=0;ihigh) high=scorei;,顺序查找,查找是用于在给定的对象列表中查找目标的位置 对数组而言,就是确定第一个与给定值相等的元素的位置,即数组元素的下标,顺序查找的基本思想是: 从头到尾把列表中的每个数据与要查找的目标进行比较,直到找到了与目标相同的数据为止。 结束查找有两种情形: 一是查找成功 二是查找不成功,查找成功,查找不成功,【程序】任意输入一个数,查找它是否在给定的数组中,若查找成功则输出位置,不成功输出不成功的信息。,#include int mai

10、n(void) int i,n; int list10=10,20,30,100,200,300,44,55,66,1000; printf(Enter an integeral number to search:); scanf(%d, ,例 用冒泡法对10个数排序,冒泡法的思路:将相邻的两个数进行比较,将小的调到前头,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,由前面的分析可知: 要排序的数必须放入数组中 用二重循环来控制整个排

11、序过程 外循环j控制比较趟数(n-1趟) 内循环i控制一趟比较的次数(n-j)次,排序过程: (1)比较第一个数与第二个数,若为逆序a0a1,则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,#include #define N 10 void main() int aN+1,i,j,t; printf(Input 10 numbers:n); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); for(i=1;iN+1;i+) printf(%d ,ai); ,#define N 6 void main() int aN,bB-60,c=1,2,3,4,5,6,i; for(i=0;iN;i+) scanf(“%d%d”, ,数组定义:必须用常量表达式,数组元素引用,

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1