自考计算机基础与程序设计 ..ppt
《自考计算机基础与程序设计 ..ppt》由会员分享,可在线阅读,更多相关《自考计算机基础与程序设计 ..ppt(60页珍藏版)》请在三一办公上搜索。
1、,数 组,共 26 页 第 2 页,第六章 数组,第一节 数组的概念第二节 一维数组第三节 二维数组第四节 字符数组,共 26 页 第 3 页,6-1 数组的概念,C语言里,计算机如何存放一个数据?,一个班学生某一科目的成绩?(80,58,72)一个3*3的矩阵?2 3 5 1 0 1 4 5 7,1)具有相同类型 2)固定的数量 3)存在相互关联,利用变量存放数据,不同数据存放在不同变量中,相互没有关联,如何存放多个相互间存在关联的数据?,数组:具有相同数据类型,数量固定的数据的有序集合数组是一个集合,构成数组的每个数据称为数组元素,把这些具有相同类型,数量固定,相互关联的数据,用一个数组来
2、统一存放,数据特点:,int a;scanf(“%d”,线性关系,行列关系,例如:存储一个班学生成绩用一维数组 float mark46 存储一个3*3的矩阵用二维数组 int a33其中:mark、a 是数组名。内是数组的下标。下标的大小限定数组的长度,表示最多能存放多少数据 不同的数组元素:用共同的名字(数组名)和各自的下标来唯一地标识 例如:mark0,mark1.mark45 float,int是数组的数据类型,它限制了数组元素的类型 例如:mark0=80.0 mark0=a错误,6-1 数组的概念,数组按维度分类:一维数组和二维数组 一维数组:可存储一行或一列数据 二维数组:可存储
3、多行和多列数据,6-1 数组的分类,例如:int a33;,例如:float mark46;,共 26 页 第 6 页,第六章 数组,1)一维数组 数组的定义 数组元素的引用 数组的初始化,数组定义的格式 回顾一下变量定义的格式:数组的定义:,6-2 一维数组,数组的定义,声明存在一个数组,说明其名称,长度和类型,类型说明符 变量名;,类型说明符 数组名常量表达式;,数组的长度,整数,数组元素的类型例如:int,float,例如:int a10;,例如:int a;,数组a可以用于存放10个整数,标识符,1)定义一个数组,可以存放10个整数 int a102)定义一个数组,可以存放5个实数 f
4、loat b5,数组的定义,2)可以同时定义多个数据类型相同的数组,以逗号分隔 例如:int a10,b5;,举例:,类型说明符 数组名常量表达式;,注意:1)常量表达式 不能是变量 例如:int a=10;int ba;错误 可以是符号常量 例如:#define N 10 main()int bN;,等价 int a10;int b5;,数组元素的引用,2.数组元素的引用,数组元素的引用:用共同数组名和各自的下标来唯一地标识 引用格式:数组名下标,例如:int a10;,可引用的数组元素:a0,a1,a9,注意:下标范围是0(长度-1)a0表示第一个数组元素,a9表示最后一个数组元素,常见错
5、误:a10=3;,引用是重点,即如何从数组中提取数据,和存放数据到数组中,提取数据:printf(“%d”,a0);或 int b=a0;存放数据:scanf(“%d”,数组存取数据:输入输出语句和赋值操作,举例:输入任意10个整数,要求按序存放在数组中,并且依次输出,数组元素的引用,main()int a10;int i;for(i=0;i=9;i+)scanf(”%d”,如何对整个数组的数据进行存取?,数据结构:int a10算法:1)输入10个数,依次存放在数组中2)依次输出数组中存放的10个数,循环1:int i=0 to 9 输入第i个数,存放到ai中 i+,循环2:int i=0
6、to 9 输出数组中数据元素ai i+,常用循环对数组中的数组元素逐个输入、输出、或进行处理,数组的输入和输出:数组,只能是逐个存取数组的单个数组元素,不能进行整体操作 1)输入/输出数组:int a10;,数组的引用,错误:直接对整个数组进行输入输出 scanf(”%d%d%d%d%d%d%d%d%d%d”,a);scanf(”%d”,a);printf(”%d”,a);printf(”%d%d%d%d%d%d%d%d%d%d”,a);,正确:用循环对逐个的数组元素进行输入输出,for(k=0;k10;k+)scanf(”%d”,数组的引用,2)修改和提取数组:不能对整个数组进行赋值操作,只
7、能对具体的某个数组元素进行赋值操作和取值操作 例如:赋值:int a10;a=2;错误 a0=2;正确 取值:int b;b=a;错误 b=a0;正确,因为:数组名不是变量,而每个数组元素是变量,可仅对部分元素赋予初值:例:int a5=1,2;结果是 a0=1,a1=2,其他=0 char a5=a,b;结果是 a0=a,其他是0对所有元素赋予初值时,数组长度可省:例:int a=1,2 等价 int a2=1,2,数组的初始化,3.数组初始化,格式:数据类型 数组名 常量表达式 初始化数据;举例:int a5=1,2,3,4,5;结果:a0=1;a1=2;a2=3;a3=4;a4=5,在定
8、义数组时,给数组赋予一个初始值,数组的初始化,3.数组初始化,int a5=1,2,3,4,5;,数组不能作为一个整体被赋值,int a5;a5=1,2,3,4,5;,不等价,举例:int a5=1,2,3,4,5;a1+a4=?,7,常见错误:,数组一旦定义,按照数组元素的先后顺序和数据类型,会在内存分配一片连续的存储空间存放数组元素.,数组的存储,例如:int a5;例如:float a5;,a0,a1,a2,a3,a4,2个字节,存储每个数据元素占多少字节由数组元素的类型决定,int-占2个字节,float-占4个字节,低地址,高地址,2,一共占?字节,int a5=1,2,3,4,5;
9、,数组的概念,数组的初始与数组存储,a0,a1,a2,a3,a4,int b=a0;/取a0=3;/写,数组元素的引用与数组存储,a0,a1,a2,a3,a4,举例:例如:输入10个整数,反向输出这10个数,数组的应用,用数组:main()int a10,i;for(i=0;i=0;i-)printf(“%d”,ai);,不用数组只能正向输出:main()int x,sum=0;for(i=0;i=9;i+)scanf(”%fn”,不用数组只能输入后,立即将数据处理或输出数组的优点是能先保存数据,再进行处理,最后输出处理结果,作业:例如:输入10个整数,求最大值,最小值和平均值,并找出最大值与
10、最小值在这组数中的位置,数组的应用,数据结构?,算法:1)输入数组的数据 2)求最大值及位置,最小值及位置,和总值3)输出结果,int a10,max,min,maxid,minid,循环,循环,排序算法:将无序的数,排成有序数的算法 例如:9 8 4 5 2 0 0 2 4 5 8 9冒泡排序:两两比较,较大数放在后,较小的数往上冒,数组的应用,一共6个数,第一轮需要比较5次,一轮过后,最大的数沉底,按照这种方法可依次得到第二轮、第三轮.的冒泡结果第二轮过后,将第二大的数放在倒数第二位置,数组的应用,第1轮结果,第2轮结果,第3轮结果,第4轮结果,第5轮结果,一共N(6)个数,需要比较m(N
11、-1=5)轮每轮比较(N-m)次:第1轮比较5次,第2轮比较4次.,第5轮比较1次,数据结构采用一维数组,在不断的两两比较过程中,调整各元素的位置即可。,程序设计双重循环用外层循环控制冒泡的轮数m为 N-1(6-1)次用内层循环来控制在第m轮冒泡过程中需要进行的大小比较次数为 N-m(6-m)次;,程序实现要点,6-2 数组应用举例-排序问题,输出6个数,从键盘任意输入6个数,main()int a6;int i,m,t,n;printf(input numbers(N=6):n);for(n=0;nai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numb
12、ers:n);for(n=0;n10;n+)printf(%d,an);,6-2 数组应用举例-排序问题,轮,共 26 页 第 23 页,第六章 数组,1)一维数组的定义 int a5;2)一维数组元素的引用 a0a4 提取数组元素:printf(“%d”,a0);b=a0;存放数据元素:scanf(“%d”,小结:,一维数组,用于存放一组存在关联的固定数量的数据,共 26 页 第 24 页,第六章 数组,2)二维数组 数组的定义 数组元素的引用 数组的初始化,二维数组:用于存储多行和多列数据,6-3 二维数组,例如:int a33;,2)4个学生,5门课的成绩,1)矩阵,例如:int a45
13、;,总行数,总列数,二维数组定义的格式,6-3 二维数组,数组的定义,声明存在一个数组,说明其名称,长度和类型,类型说明符 数组名常量表达式1常量表达式2;,第一维的长度,数组总行数,数组a可以用于存放4行5列的数据,第二维的长度,数组总列数,例如:int a45;,67 74 80 76 7070 73 85 70 7465 70 76 80 8777 80 90 86 90,int a45;,int a54;,不等价,数据元素的总个数=常量表达式1*常量表达式2,只需要给出一维的前后次序就能确定一个数组元素,6-3 二维数组,例如:int a33;,要确定行和列两个方向的次序才能确定一个数
14、组元素,例如:mark0,例如:a00,二维数组:,行号,列号,一维数组:,二维数组在概念上是二维的,两个下标可分别在两个方向上变化,第一个下标控制行,第二个下标控制列,2.二维数组元素的引用,引用格式:数组名下标1下标2,例如:int a34;总共3行4列数据,可引用的数组元素:,提取数据:printf(“%d”,a00);或 int b=a00;存放数据:scanf(“%d”,数据所在行0总行数-1,数据所在列0总列数-1,a12:表示第2行第3列数据,a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23,6-3 二维数组,注意:下标从0开始,a3
15、1,a14,错误,和一维数组一样,只能逐个对数组元素进行存取,举例:输入任意12个整数,存放在一个3行4列的二维数组,并且依次输出,二维数组元素的引用,main()int a34;int I,j;for(i=0;i=2;i+)for(j=0;j=3,j+)scanf(“%d”,如何对整个二维数组的数据进行存取?,数据结构:int a34算法:1)输入12个数,依次存放在数组中2)输出数组,外循环:int i=0 to 2 控制行 i+,内循环:int j=0 to 3 控制列 输入数据,存于数据元素aij j+,常用两重循环对数组中的数组元素逐个输入、输出、或进行处理,输入,2.二维数组元素的
16、初始化,6-3 二维数组,1)将所有数据写在一个内,按顺序赋值 例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;2)按行给数组元素赋初值 例:int a34=1,2,3,4,5,6,7,8,9,10,11,12;3)按行对部分元素赋初值 例:static int a34=1,0,6,0,0,11;4)给所有元素赋初值时,可以省略第一维的长度,但不能省第二维 例:static int a4=1,2,3,4,5,6,7,8,9,10,11,12;,在定义数组时,给数组赋予一个初始值,6-3 二维数组,二维数组的存储,例如:int a34;,二维数组的存储按行存放,a11,
17、a10,a12,a13,a20,a23,从第一行开始,从左到右存放.到行末,转向下一行第一个元素,又从左到右依次存放,直到最后一个元素.,6-3 二维数组,注意:,1)二维数组可以看成是由若干一维数组组成的数组,a0,a1,a2,a0代表一个一维数组,对应二维数组里的一行,a0,可把二维看做一维,举例:已知矩阵A,编程实现矩阵的转置,二维数组元素的引用,main()int a34=2,3,5,8,1,0,1,2,4,5,7,6;int i,j;for(i=0;i=2;i+)for(j=0;j=3,j+)bji=aij;,int a34 初始化 int b43算法:1)转置:将数据逐行逐列的复制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考计算机基础与程序设计 自考 计算机 基础 程序设计
链接地址:https://www.31ppt.com/p-2568018.html