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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

一维数组,二维数组.ppt

1、数组 一维、二维数组,课前预习 将手机调到静音 认真做笔记 及时完成作业,上课要求,了解数组的概念 掌握定义和引用一维数组的方法 掌握定义和引用二维数组的方法,学习目标,数组 定义和引用一维数组 定义和引用一维数组,学习内容,6.1 数组的概念,前几章使用的变量都属于基本类型,例如整型int、字符型char、浮点型(float、double)数据,这些都是简单的数据类型。对于有些数据,只用简单的数据类型是不够的,难以反映出数据的特点,也难以有效地进行处理。,30名学生成绩,需要用30个变量 100名学生成绩,需要用多少个变量? 用s1,s2,s3,s30表示成绩,能否体现内在联系? C语言用方

2、括号中的数字表示下标,如用s15表示,s为数组名,15为数组中元素的个数。,一组具有同一属性的数据,数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号,如s5。 用一个数组名和下标唯一确定数组中的元素。 数组中的每一个元素都属于同一个数据类型。 用循环对数组中的元素进行操作,可以有效地处理大批量的数据,大大提高效率。,6.2.1 定义一维数组6.2.2 引用一维数组的元素6.2.3 一维数组的初始化6.2.4 一维数组程序举例,6.2 定义和引用一维数组,6.2.1 定义一维数组,一维数组是最简单的数组。数组元素只有1个下标一维数组,s5,相当于“线”。 数

3、组元素有2个下标二维数组,s12,相当于“面”。 数组元素有3个下标三维数组,s243,相当于“体”。 一维及多维数组的概念和用法是类似的。,6.2.1 定义一维数组,定义数组的方法与定义变量的方法类似。 int a;int a5;不同的是数组一次定义一批有关联的变量;在定义数组时需要指定这批变量的类型、数组名称,数组中包含变量的个数。 如 int a10;,6.2.1 定义一维数组,定义一维数组的方式为:类型符 数组名常量表达式; 数组名的命名规则和变量名相同,符合标识符的命名规则。 常量表达式给出元素的个数。 下标从0开始,如 int a10;a0,a1,a2,a9注意没有a10这个元素。

4、,常量表达式中可以包括常量和符号常量,不能包含变量,即数组的大小不依赖于程序运行过程中变量的值。int n;scanf(“%d”,6.2.2 引用一维数组的元素,必须先定义数组,才能引用数组中的元素 t=a3,将a数组中序号为3的元素的值赋给变量t。 只能逐个引用数组元素而不能一次引用整个数组中的全部元素。b=a2;c=a5;printf(“%d,%d,%d,%d,%d,%dn”,a);,6.2.2 引用一维数组的元素,引用数组元素的表示形式为:数组名下标a0=a5+a2+1-a2*3 a7/3,a19%3int n=5,a10; an=20;,注意定义数组与引用数组元素的区别:形式上:int

5、 a10;定义数组长度为10;t=a6;引用a数组中序号为6的元素;简单的判别方法:如果在数组名常量前有类型名(char,int,float,double等),则为定义数组。如果没有类型名,则为引用数组元素。,例6.1 引用数组元素。利用循环给数组元素a0a9赋值为09,然后按逆序输出各元素的值。 解题思路: 先用循环给数组元素a0 a9赋值09,这样,每个数组元素都有固定的值了,然后按a9到a0的顺序输出各元素的值。,#include void main() int i,a10; for(i=0;i=0; i-)printf(“%d “,ai); printf(“n“); ,使a0a9的值为

6、09,a0a1a2a3a4a5a6a7a8a9,先输出a9,最后输出a0,6.2.3 一维数组的初始化,对数组元素的赋值既可以通过赋值语句来实现,也可以在定义数组时同时给予初值,这就称为数组的初始化。(1) 定义数组时对全部数组元素赋初值 int a10=0,1,2,3,4,5,6,7,8,9; a0=0,a1=1,a2=2;a3=3;a4=4;a5=5,a6=6, a7=7,a8=8,a9=9。,(2) 可以只给一部分元素赋值,未被赋值的根据数组类型自动赋值。int a10=0,1,2,3,4;int a10=0,1,2,3,4,0,0,0,0,0;,(3)在对全部数组元素赋初值时,如果数据

7、个数确定,则可以在定义数组时不指定数组长度,系统根据数据的数量确定数组的长度。int a5=1,2,3,4,5; 可写为 int a =1,2,3,4,5;注意:如果数组的长度与定义初值的个数不相同,则数组长度不能省略。如果数组a的长度为10,使用int a =1,2,3,4,5;数组只赋了5个初值,系统认为数组长度为5。应该写为a10 =1,2,3,4,5;,6.2.4 一维数组程序举例,例6.2 用数组来处理求Fibonacci数列问题。Fibonacci数列问题的含义见例P138(兔子生小兔子)。,解题思路: 建立一个数组,将数列中第1个数放在数组第1个元素中,数列第2个数放在数组第2个

8、元素中, 数组序号为i的元素的值是其前两个元素值之和。即:fi= fi-2+fi-1 用循环来求出数组各元素之和,费波那西(Fibonacci)数列,#include void main() int i;int f20=1,1; /f0和f1的值1,1for(i=2;i20;i+) fi=fi-2+fi-1; /求f2和f19的值for(i=0;i20;i+) if(i%5=0) printf(“n“); /每行输出5个printf(“%12d“,fi); printf(“n“); ,例5.8程序在顺序求出并输出各个数后,不能保存这些数据,如果要单独输出第10个数,是比较困难的。本例用数组处理

9、时,把每个数据都保存在各数组元素中,如果要单独输出第10个数,是很容易的,直接输出f9即可。,例6.3 假如有n个人,各人年龄不同,希望按年龄将他们从小到大排列。 解题思路: 排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小 把题目抽象为:“对n个数按升序排序” 采用起泡法排序:先将第1个数和第2个数比较,如果第2个数比第1个数小,将两数交换,交换后大的放到第2个位置,将第2个数和第3个数比较,如果第2个数比第三个数小,将两数交换,交换后大的放到第3个位置,。执行一次循环后,最大的书被沉到最后面。,9 8 5 4 2 0,8 9 5 4 2 0,8 5 9 4 2 0,8

10、 5 4 9 2 0,8 5 4 2 9 0,8 5 4 2 0 9,大数沉淀,小数起泡,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,8 5 4 2 0 9,5 8 4 2 0 9,5 4 8 2 0 9,5 4 2 8 0 9,5 4 2 0 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,5 4 2 0 8 9,4 5 2 0 8 9,4 2 5 0 8 9,4 2 0 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai

11、;ai=ai+1;ai+1=t; ,4 2 0 5 8 9,2 4 0 5 8 9,2 0 4 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,2 0 4 5 8 9,0 2 4 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(j=0;j5;j+),#include void main() int a10; int

12、 i,j,t; printf(“input 10 numbers :n“); for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; printf(“the sorted numbers :n“); for(i=0;i10;i+) printf(“%d “,ai); printf(“n“); ,6.3 二维数组的定义和引用,6.3.1 定义二维数组 6.3.2 引用二维数组的元素 6.3.3 二维数组的初始化 6.3.4 二维数组程序举例,6.3.1 定义二维数组,二维数组定义的一般形式为类型符 数组名常量表达式常量表达式;float a34,b510; 定义a为34(3行4列

13、)的数组b为510(5行10列)的数组 注意不能写为float a3,4,b5,10;,6.3.1 定义二维数组,二维数组在内存中的存储顺序:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素,见图6.6,P156-P157。,6.3.2 引用二维数组的元素,二维数组元素的表示形式为:数组名下标下标 b12=a23/2 合法c3/25%5,d2+26-3 合法int a34; a34=3; 不合法,6.3.3 二维数组的初始化,int a34=1,2,3,4,5,6,7,8,9,10,11,12;等价于 int a34=1,2,3,4,5,6,7,8,9,10,11,12;/按行存

14、放int a34=1,5,9;等价于 int a34=1,0,0,0,5,0,0,0,9,0,0,0;int a34=1,5,6;等价于 int a34=1,5,6,0;等价于 int a34=1,0,0,0,5,6,0,0,0,0,0,0;,6.3.3 二维数组的初始化,int a34=1,2,3,4,5,6,7,8,9,10,11,12;等价于 int a 4=1,2,3,4,5,6,7,8,9,10,11,12;int a4=0,0,3, ,0,10;等价于 int a4=0,0,3,0,0,0,0,0 ,0,10,0,0;,6.3.4 二维数组程序举例,例6.4 将一个二维数组a的行和

15、列的元素互换,存到另一个二维数组b中。,编程思路: 将a数组中第i行j列元素赋给b数组中j行i列元素例如 a00 赋给 b00a01 赋给 b10a02 赋给 b20, 可以用双层循环来处理,用外循环控制行的变化,内循环控制列的变化,#include void main() int a23=1,2,3,4,5,6;int b32,i,j;printf(“array a:n“);for (i=0;i2;i+) /i控制行数的变化 for (j=0;j3;j+) /j控制列数的变化printf(“%5d“,aij); /输出a的各元素bji=aij; /a元素值赋给b相应元素printf(“n“)

16、;,printf(“array b:n“); for (i=0;i3;i+) for(j=0;j2;j+)printf(“%5d“,bij);/输出b的各元素,行列互换printf(“n“); ,例6.5 一个班有5个学生,己知每个学生有5门课的成绩,要求输出平均成绩最高的学生的成绩以及该学生的序号。解题思路: 用二维数组,行代表学生,列代表一门课的成绩及平均成绩。 要存放5个学生5门课的成绩和平均成绩,数组的大小应该是56。,#include void main() int i,j,max_i; float sum,max=0;float s56=78,82,93,74,65,91,82,7

17、2,76,67,100,90,85,72,98, 67,89,90,65,78,77,88,99,45,89 /最后一列存放平均成绩 ;,for(i=0;imax) /序号i为平均成绩最高的学生max=si5;max_i=i; /max为最高平均成绩 printf(“stu_order=%dn“,max_i); printf(“max=%7.2fn“,max); ,1、用数组来处理求Fibonacci数列问题。Fibonacci数列问题的含义见例P138(兔子生小兔子)。 2、假如有n个人,各人年龄不同,希望按年龄将他们从小到大排列。 3、 将一个二维数组a的行和列的元素互换,存到另一个二维数组b中。,作业,

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


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

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

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