ImageVerifierCode 换一换
格式:PPT , 页数:31 ,大小:847KB ,
资源ID:12231609      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-12231609.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数组--二维数组.ppt)为本站会员(j35w19)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数组--二维数组.ppt

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;ia1),则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排

3、序后,排序结束,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; /*end if*/ /*end for i*/,#define N 10 main() int aN, i, j

4、, 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语言、通信导论)的成绩,求每个学生的平均分,每门课程的平均分,并按成绩高低排序。,二维数组,二维数组,二维数组的定义形式 类型说明符 数组名常量表达式1常量表达式2; 例如: int num34; /*由12个整数组成的

5、数组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 num20,num21,num22,num23,二维数组元素的存储,二维数组中的元素通过一对下标(行下标、列下标)标识 例

6、如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列、第1列、.、第n-1行 例如int a34;,a00 a01 a02 a03 a10 a11 a12 a13 a20

7、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+) for(j = 0; j 4; j+) scanf(%d,自动形成二维数组元素的值,若二维数组元素的值按行(或列

8、)、是有规律的,可以用程序自动形成二维数组元素的值,建立一个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(“%d”,printf(“output the array by line :n”); for( i=0; i2; i+)

9、 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; i=2 ; i+) for(j=0; j=1; j+) printf(%5d,bij); printf(n); ,

10、二维数组的应用,矩阵是很多科学与工程计算问题中研究的对象 矩阵中的元素用二维数组存储,输入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( cours = 0; cours 3; cours+) sum = 0; for( stu = 0; stu 4; s

11、tu+ ) 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= sum / 3; printf(“average of student %d is %f n” , stu+1 ,

12、 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=0;i=2;i+) for(j=0;j=3;j+) printf(%5d,aij); printf(n); print

13、f(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 求矩阵中最大元素值及其行列号,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,用数组元素做函数参数编程实现计算并存放这些元素的值。,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报