计算机程序设计A.ppt
《计算机程序设计A.ppt》由会员分享,可在线阅读,更多相关《计算机程序设计A.ppt(50页珍藏版)》请在三一办公上搜索。
1、第五章 数组,本章目的,熟练掌握一维数组的定义和引用;掌握二维数组的定义和引用;利用数组编写程序(求最大最小值,平均值,选择排序,冒泡排序,字符串的处理,矩阵运算),为什么要使用数组,只用前面所讲的基本数据类型(int,long,float,double,char),解决复杂的问题有困难.例:排序问题,两个数排序?,if(a b)t=a;a=b;b=t;,三个数排序?,if(a b)t=a;a=b;b=t;if(a c)t=a;a=c;c=t;if(b c)t=b;b=c;c=t;,四个数排序?,if(a b)t=a;a=b;b=t;if(a c)t=a;a=c;c=t;if(a d)t=a;
2、a=d;d=t;if(b c)t=b;b=c;c=t;if(b d)t=b;b=d;d=t;if(c d)t=c;c=d;d=t;,100个数排序?,!?,数组概念,有序数据的表示测量球的直径:需要多次测量,求平均值按学号排列的成绩表都是由具有相同类型的若干个分量按一定顺序排列组成的,数组概念,按序排列的相同类型的数据的集合称为数组这些数据叫数组的元素用数组名和下标来唯一地确定数组中的元素数组的特征:数组名、数组元素的类型和个数(数组长度),5-1 一维数组,一维数组的定义:数组类型名 数组名1exp1,数组名2exp,;其中:exp、exp1为常量表达式,正整数;如:int a10含义:定义
3、了一个一维数组a,共有10个元素,它们都是整型数据变量.数组元素在内存中从下标为0的元素开始连续存放。,已定义 char c120;请问,此语句的含义?,int n=10,bn;float x7.5;含义?,5-1 一维数组,一维数组的初始化在定义数组时对数组元素赋初值,否则是不确定值 int a5=1,2,3,4,5;可以只给部分元素赋初值,其余初值为0 int b5=1,2,3;对全部数组元素赋初值时,可省略数组长度 int c=1,2,3,4,5;初值的个数不能多于数组长度,5-1 一维数组,一维数组元素的引用数组必须先定义,后引用只能引用数组元素,不能一次引用整个数组引用数组元素的形式
4、:数组名下标表达式下标表达式可以是常量、变量、表达式。下标表达式的取值范围是:0 数组长度-1 且为正整数。,int a10,j=5;a0=5;aa0=9;aj+3=8;,a3.5=9;a10=4;,5-1 一维数组,应用举例例 1:用数组来处理 求 Fibonacci 数列问题:Fibonacci 数列:F1=1F2=1Fn=Fn-1+Fn-2n 3解:用数组f40来存放Fibonacci数列前40项.f0=1,f1=1,fn=fn-1+fn-2(n1),#include void main()int i;long f 40=1,1;for(i=2;i 40;i+)f i=f i-2+f i
5、-1;for(i=0;i 40;i+)if(i%4=0)printf(n);printf(%16ld,f i);,5-1 一维数组,应用举例例 2:输入一个班级学生的一门课成绩(人数=50),计算平均成绩,并统计高于平均成绩的学生人数.解:必须用数组完成。算法框图:,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(1)选择法排序:找出最小的放在最前面。,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(1)选择法排序:找出最小的放在最前面。每一轮找出一个最小的,共n1轮。,#include void main()float a 100,t;int i,j,k,n;scan
6、f(“%d”,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(2)冒泡法排序:将相邻两个数比较,将小的调到前头,大的调到后面。,985420,985420,89,59,49,29,09,9,9,854209,58,48,28,08,8,8,420589,5,5,204589,4,4,024589,2,2,结果,开始,024589,共循环多少次?每次循环进行了多少次比较?什么时候结束?如果序列为5、8、9、4、2、0,先排在最后的还是 9 吗?如果要求先将最小的数排在最前面,该如何操作?,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(2)冒泡法排序数据结构:变量n:这一
7、组数的个数,从键盘输入.一维数组a:存放这n 个数(a0,an-1)循环变量i表示轮次,初值=0 循环变量j表示每轮中,比较时元素的下标值。j每轮都从0开始,以aj 和 aj+1 比较 每轮比较次数不断减1。,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(2)冒泡法排序,#include void main()int a 100,n,i,j,t;scanf(“%d”,5-1 一维数组,对n 个数排序问题(以从小到大排序为例)(2)冒泡法排序:改进的冒泡排序:如果在某轮外循环中,一次交换也没有发生,则说明已排好序,外循环可以不再进行.可以用一个标记变量来表示是否交换过。,5-1 一
8、维数组,在n个数中查找某一个数。顺序查找法:n个数一个个与被查找数比较。折半查找法:不要求,略!,#include void main()int a100,i,n,x;scanf(“%d”,for(i=0;in;i+)if(ai=x)printf(“find:%d it is a%dn”,x,i);exit(0);printf(“%d not been foundn”,x);,练习,读程序写结果,#include void main()int p7=11,13,14,15,16,17,18,i=0,k=0;while(i7,5-2 二维数组,C语言中,数组元素又可以是一个数组,这样就构成了多维
9、数组。二维数组是“数组的数组”,数据有行列之分,用两个下标标识一个数组元素,适合处理矩阵。,5-2 二维数组,二维数组的定义数组类型名 数组名行常量表达式列常量表达式;,int a23;/*定义一个2行3列的整型数组a,共有6个元素,分别为a00,a01,a02,a10,a11,a12,这些元素均为简单的整型变量。*/char c310;float b22;,可把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组例如,可把 a34 看作是一个一维数组,有3个元素:a0、a1、a2,每个元素又是一个包含 4 个元素的一维数组。见下图:,二、二维数组的存储,二维数组中元素排列的顺序是按行存
10、放,a0a1a2,a00 a01 a02 a03,a,a10 a11 a12 a13,a20 a21 a22 a23,三、二维数组的初始化,1、按行,2、按存放顺序,例:int b23=1,2,3,4,5,6;,3、只给部分元素赋初值,例:int c23=1,2,4;int d23=0,0,9,0,6;,按行存放,例:int a23=1,2,3,4,5,6;,4、省略第一维长度;,例:int e3=1,2,3,4,5,6,7;,注意:不能省略第二维的长度。为什么?,四、二维数组的引用,二维数组元素的表示:数组名行下标列下标,如:a23a2-12*2-1b12=a23/2,注意数组定义和数组元素
11、引用的区别例如int a34;第一个元素是a00,最后一个元素是a23,下标可以是整型表达式,5-2 二维数组,二维数组的使用举例矩阵转置:将一个矩阵的行、列互换,#include void main()int a23=1,2,3,4,5,6;int b32,i,j;printf(array a:n);for(i=0;i 2;i+for(j=0;j 3;j+)printf(%3d,aij);bji=aij;printf(n);,printf(array b:n);for(i=0;i 3;i+)for(j=0;j 2;j+)printf(%3d,bij);printf(n);,5-2 二维数组,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 程序设计
链接地址:https://www.31ppt.com/p-4109501.html