数组--二维数组课件

上传人:我*** 文档编号:141977336 上传时间:2020-08-14 格式:PPT 页数:31 大小:375KB
返回 下载 相关 举报
数组--二维数组课件_第1页
第1页 / 共31页
数组--二维数组课件_第2页
第2页 / 共31页
数组--二维数组课件_第3页
第3页 / 共31页
数组--二维数组课件_第4页
第4页 / 共31页
数组--二维数组课件_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《数组--二维数组课件》由会员分享,可在线阅读,更多相关《数组--二维数组课件(31页珍藏版)》请在金锄头文库上搜索。

1、数组,一维数组的应用、二维数组,复习,一维数组的定义形式 类型说明符 数组名常量表达式; 例如: int num10; /*由10个整数组成的数组num*/ double a100; /*由100个浮点数组成的数组a*/,一维数组中的元素由一个下标表示,例 用简单选择法对10个数排序,排序过程: (1)首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束,例,初始: 49 38

2、65 97 76 13 27 ,i=1,13,49,一趟: 13 38 65 97 76 49 27 ,i=2,27,38,六趟: 13 27 38 49 65 76 97 ,#define N 10 main( ) int aN, i, j, k, x; printf(Input 10 numbers:n); for( i=0;iN;i+) scanf(%d, ,例 用冒泡法对10个数排序,排序过程: (1)比较第一个数与第二个数,若为逆序(a0a1),则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2

3、)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,数组元素以a0,a1,.,a7表示,冒泡排序流程图,i 1,i=7?,开始,结束,Y,i i+1,N,进行第i趟冒泡排序,冒泡排序,int i, j, t, a8 = 43, 18, 9, 13, 55, 7, 43, 20;,for(i = 0; i aj+1) te = aj; aj = aj+1; aj+1 = t

4、; /*end if*/ /*end for i*/,#define N 10 main() int aN, i, j, t; printf(Input 10 numbers:n); for(i=0;iaj+1 ) t=aj; aj=aj+1; aj+1=t; printf(The sorted numbers:n); for(i=0;iN;i+) printf(%d ,ai); ,问题,输入十个学生的C语言考试成绩,求平均分,最高分,最低分,并按成绩高低排序。 输入十个学生3门课程(高数、C语言、通信导论)的成绩,求每个学生的平均分,每门课程的平均分,并按成绩高低排序。,二维数组,二维数组,

5、二维数组的定义形式 类型说明符 数组名常量表达式1常量表达式2; 例如: int num34; /*由12个整数组成的数组num*/ double a50100; /*由5000个浮点数组成的数组a*/,可将二维数组看成是一个由m行n列构成的矩阵 int num34; /*三行四列:34个元素*/ double a50100; /*50行100列:50100个元素*/,二维数组中的元素,二维数组中的元素通过一对下标(行下标、列下标)标识 例如 int num34; /*三行四列:34个元素*/ num00,num01,num02,num03 num10,num11,num12,num13 nu

6、m20,num21,num22,num23,二维数组元素的存储,二维数组中的元素通过一对下标(行下标、列下标)标识 例如int num34; /*三行四列:34个元素*/ num00,num01,num02,num03 num10,num11,num12,num13 num20,num21,num22,num23,二维数组中的元素可以按行方式存储,也可以按列方式存储,按行存储,m行n列的元素存储顺序为:第0行、第1行、.、第m-1行 例如int a34;,a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,按列存储,m行n列的元素存储顺序为:第0列、

7、第1列、.、第n-1行 例如int a34;,a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,每个元素ai由包含4个元素 的一维数组组成,二维数组a是由3个元素组成,二维数组理解,按元素排列顺序初始化,main( ) int i, j; int a 4 = 1, 3, 4,5 ; for( i=0; i3; i+) for( j=0; j4; j+) printf(%d , aij ); printf(n); ,二维数组元素的初始化 分行初始化:,从键盘输入二维数组元素的值,int i, j; int a34; for(i = 0; i 3; i

8、+) for(j = 0; j 4; j+) scanf(%d,自动形成二维数组元素的值,若二维数组元素的值按行(或列)、是有规律的,可以用程序自动形成二维数组元素的值,建立一个2*3的数组b,要求其各元素值是行、列下标之和。,int b23, i, j; for( i=0; i2; i+) for( j=0; j3; j+) bij=i+j;,程序举例,例1 给2*3数组输入数据,并按行输出,main() int a23, i, j;,printf(“enter the data by line :n”); for(i=0; i2; i+) for(j=0; j3; j+) scanf(“%

9、d”,printf(“output the array by line :n”); for( i=0; i2; i+) for( j=0; j3; j+) printf(“%4d”, aij); printf(“n”); ,例2 将二维数组行列元素互换,存到另一个数组中,main() int a23=1,2,3,4,5,6; int b32, i, j; printf(array a:n); for( i=0; i=1; i+) for( j=0; j=2; j+) printf(%5d,aij); bji=aij; printf(n); printf(array b:n); for( i=0

10、; i=2 ; i+) for(j=0; j=1; j+) printf(%5d,bij); printf(n); ,二维数组的应用,矩阵是很多科学与工程计算问题中研究的对象 矩阵中的元素用二维数组存储,输入4名学生3门课程的成绩,分别求每门课的平均成绩和每个学生的平均成绩.,共有4*3=12个数据,可从两个方面分组: 横向(按行):每行对应每个学生 纵向(按列):每列对应每门课程,main( ) float score43 = 89,78,56,88,99,100,72,80,6160,70,75; int stu , cours ; float sum, ave1, ave2; for(

11、cours = 0; cours 3; cours+) sum = 0; for( stu = 0; stu 4; stu+ ) sum += scorestu cours; ave1= sum / 4; printf(“average of course %d is %f n” , cours+1 , ave1); ,二维数组score的初始化,求每门课程的平均成绩(每列)共3门,每门课程都有4个分数,for( stu = 0; stu 4; stu+) sum = 0; for( cours= 0; cours 3; cours+ ) sum += scorestu cours; ave2

12、= sum / 3; printf(“average of student %d is %f n” , stu+1 , ave2); ,求每个学生的平均成绩(每行)共4个学生,每个学生都有3个分数,例3 在二维数组a中选出各行最大的元素组成一个一维数组b。 a= 3 16 87 65 b=(87 108 37) 4 32 11 108 10 25 12 37,main() int a4=3,16,87,65,4,32,11,108, 10,25,12,27; int b3, i, j, m; for(i=0;im) m=aij; bi=m; printf(narray a:n);,for(i=

13、0;i=2;i+) for(j=0;j=3;j+) printf(%5d,aij); printf(n); printf(narray b:n); for(i=0; i=2; i+) printf(%5d,bi); printf(n); ,例4 读入下表中值到数组,分别求各行、各列及表中所有数之和。,#include main( ) int x54, i, j; for(i=0;i4;i+) for(j=0;j3;j+) scanf(%d, ,for(i=0;i5;i+) for(j=0;j4;j+) printf(%5d,xij); printf(n); ,例 5 求矩阵中最大元素值及其行列

14、号,main() int a34= 1,2,3,4, 9,8,7,6, -10,10,-5,2 ; int i, j, row=0, colum=0, max; max=a00; for(i=0;imax) max=aij; row=i+1; colum=j+1; printf(max=%d,row=%dn colum=%dn,max,row,colum); ,编程打印如下形式的杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 提示:用二维数组存放杨辉三角形中的数据,这些数据的特点为:第0列全为1,对角线上的元素全为1,其余的左下角元素aij = ai-1j-1 + ai-1j,用数组元素做函数参数编程实现计算并存放这些元素的值。,

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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