lesson9数据的组织结构一一维数组

上传人:c****d 文档编号:243155323 上传时间:2024-09-17 格式:PPT 页数:33 大小:420KB
返回 下载 相关 举报
lesson9数据的组织结构一一维数组_第1页
第1页 / 共33页
lesson9数据的组织结构一一维数组_第2页
第2页 / 共33页
lesson9数据的组织结构一一维数组_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Lesson 9,数据的组织,2024/9/17,学习目标,:,3,1,学会使用数组处理程序中的数据,2024/9/17,3,数组概念,2,向量,数学定义:一组既有大小又有方向的量,例如:,向量,d:(1,,,3,,,4,,,6,,,5,,,2,,,0,,,8),向量,b:(100,,,300,,,200,,,400),特点:,1,、是一组量,2,、有方向性,即每个数据在其中有位置,2024/9/17,3,数组概念,2,在,C,语言中,数组与向量对应,可以实现处理与向量相关的问题,数组:若干类型相同的相关数据,(,变量,),顺序排列在一起,例如:,向量,d:(1,3,4,6,5,2,0,8),4,6,5,2,0,8,1,3,2024/9/17,3,数组概念,2,数组类型的应用背景(处理向量问题),(,1,)同时存在若干个用来描述同一性质且不同个体的数据,(,向量,),。,(,2,)只有将这些数据组织在一起形成批量数据,使用循环进行处理。,2024/9/17,3,一维数组,3,类型 数组名,长度,定义数组一般形式:,int array 10,例:,float f 100;,char ch 5;,所有元素都是,int,数组名,长度:,10,注意:必须是常量,数组:,array,2024/9/17,3,数组概念,2,数组名:,d,用位置,(,下标,),表示。,注,:,下标从,0,开始,d0,d1,d2,d3,d4,d5,d6,d7,数组特性:,1,、有统一的名字,即数组名,3,、可通过变量在其中的位置来表示它,2,、多个变量有序的排列,4,、数组中的变量叫数组元素,它在其中的位置叫下标,2024/9/17,3,一维数组,3,数组定义后的元素初值是随机数,一般需要我们来初始化,int,a10 = 1,2,3,4,5,6,9,0,12,-1;,int,a = 11, 22, 33, 44, 55 ;,int,a5 = 1 ;,1,2,3,4,5,6,9,0,12,-1,省略时,长度为,5,,,2024/9/17,3,一维数组,3,数组元素的引用,例,:d3;,#include ,int main(),int d10=1,0,4,2,3,4,5,6,30,40,s;,s=d0+d1+d4+d8;,printf(“s=%d”,s);,return 0;,d2,d6,d,2024/9/17,3,数组概念,2,例,:,从键盘输入一个数,按二进制形式输出,分析,:,将一个数的所有二进制位看成一个向量,例如,:,如果输入的是,82,则是,(0,1,0,1,0,0,1,0),问题转换成如何求该向量,2024/9/17,3,数组概念,2,C,语言中的数组可以表示向量,则向量,a(0,1,0,1,0,0,1,0),在,C,语言中就是,0,1,0,0,1,0,0,1,数组,a,因此问题转换成如果给数组,a,中的元素赋值,提问:如何赋值,有没有规律?,2024/9/17,3,数组概念,2,从键盘输入的是,82,d7 = 0,d6 = 1,d5 = 0,d4 = 0,d3 = 1,d2 = 0,d1 = 1,d0 = 0,最后按照顺序输出,d0d7,的值,d7=n%2;n=n/2;,d6=n%2;n=n/2;,d5=n%2;n=n/2;,d4=n%2;n=n/2;,d3=n%2;n=n/2;,d2=n%2;n=n/2;,d1=n%2;n=n/2;,d0=n%2;n=n/2;,2024/9/17,3,数组概念,2,思路,1,、定义一个数组,长度为,8,2,、定义变量,n,,,i,,,n,放所要转换的数,,i,作为访问数组中变量的位置,3,、从第,7,个开始,往前逐个给数组中的变量赋值,4,、从第,0,个开始,往后逐个输出数组中的变量,2024/9/17,流程图,2024/9/17,3,数组概念,2,#include ,int main( ),int d8,n,i;,scanf(%d,for(i=7;i=0;i-),di=n%2;,n=n/2;,for(i=0;i=7;i+),printf(%d,di);,system(pause);,return 0;,2024/9/17,3,数组的妙用,3,例,:,输出数列,1,,,1,,,2,,,3,,,5,,,8,的前,20,项,1,1,2,3,5,8,13,21,34,55,思路,:,将数列看成一向量,1,、定义一个长度,20,个的数组表示向量,2,、根据位置关系逐个计算每个变量,(,元素,),的值,2024/9/17,#include ,#define NUM 100,int main( ),int fNUM,i;,f0=1;,f1=1;,for (i=2; iNUM; i+),fi=fi-1+fi-2;,for (i=0; iNUM; i+),printf(“%d,”,fi);,return 0;,lesson9_01.c,2024/9/17,3,数组的妙用,:,课堂练习,3,求,S=1/1+1/2+2/3+3/5+5/8+8/13+,后面,20,项的和,分析,s=1/1+1/2+2/3+3/5+5/8+,式中各项都是,1 1 2 3 5 8 13,数列中的值,将其求出来放在数组中,然后逐个相除,2024/9/17,3,一维数组的基本操作,4,数组的赋值,利用赋值语句为数组赋值,for (i=0; i10; i+),votei = 0;,调用标准输入函数为数组赋值,for (i=0; i10; i+) ,scanf(“%d”, ,int vote 10;,2024/9/17,3,一维数组的基本操作,4,数组的输出,for (i=0; i10; i+) ,printf(“%5d”, votei);,int vote 10;,2024/9/17,3,数组应用,5,数组大小最好用宏来定义,以适应未来可能的变化,#define SIZE 10int aSIZE;,注意:,1,、数组一旦定义,不能改变大小,2,、访问数组元素时,下标不能超过长度,即下标有效范围,0,len),3,、数组间不能整体赋值,2024/9/17,3,数组应用,6,如果有数组,int a10=1,2,4,5,3,6,7,8,9,0;,int b10;,如果需要使数组,b,中元素的值与,a,的一样,b=a (,是错误的,),正确做法,for(i=0;i10;i+),bi=ai;,2024/9/17,3,课堂练习,6,从键盘输入某班,10,位同学,C,语言学习成绩,输出最高分,2024/9/17,3,数组应用,5,例,2,:使用筛选法输出,18,内的所有素数,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,1,2,18,0,0,0,0,0,0,0,0,3,0,0,4,2024/9/17,#include ,#include ,#define NUM 18,int main( ),int dataNUM,i,j,n;,for (i=0; iNUM; i+)/*,给数组的元素赋值*,/,datai=i+1;,n=sqrt(NUM);,for(i=1;in;i+) /*,将数组中非素数置成,0*/,for(j=i+1;jNUM;j+),if(datai!=0&dataj%datai=0),dataj=0;,for(i=1;iNUM;i+)/*,输出*,/,if(datai!=0),printf(%6d,datai);,return 0;,lesson9_02.c,2024/9/17,3,数组应用,5,例,3,:已知在一条铁路上有十个站,:A,B,C,D,E,F,G,H,I,J,如下图所示,127,A,B,C,D,E,F,G,H,J,I,100,200,56,131,38,98,75,火车票费用计算规则,:,当乘车距离,=300,公里时,超过部分每公里,0.3,元,设计一个程序,输入两个站的站名,计算其应付的火车票费用,88,2024/9/17,3,数组应用,5,问题分析,使用数组保存相邻站之间的距离,通过站名计算乘车距离,计算火车票费用,2024/9/17,#include ,#define NUM 9 /*,段数 *,/,int main( ),int lineNUM = 100,200,56,131,38,98,75,88,127,i,distance=0;,float value;,char start,end,ctn;,while(1),printf(,请输入乘车起点站,n);,scanf(%c, ,printf(,请输入乘车终站,n);,scanf(%c, ,for(i=start-A;iend-A;i+),distance+=linei;,if(distance%c,站的火车票费用为,%.2f,元,n,start,end,value);,printf(,是否继续,(Y/N);,scanf(%c,if(ctn!=Y) break;,system(cls);,return 0;,lesson9_03.c,2024/9/17,3,数组应用,5,根据需求对数据进行统计,为了满足特定的需要,对一组数据的某些特征进行统计是一项经常遇到的基本操作。,例如,统计一段文本中某个字符出现的频率;统计学生考试的平均成绩等等都属于统计操作。统计操作的结果往往是通过对所有数据进行扫描、判断或综合加工得到的。,在,C,程序中,参与统计操作的批量数据可以用一维数组来组织,具体统计过程可以通过逻辑判断、累计、算术运算等基本操作手段实现。,2024/9/17,例,4,:统计一段文本中每个英文字母出现的次数。,分析,:,定义一个数组,letter,,存放英文字母出现的次数,0,0,0,0,0,0,0,0,letter,A,的,次数,B,的,次数,C,的,次数,循环字符数组,针对每个字母,找到其在数组,letter,中的对应位置,然后加,1,3,数组应用,5,2024/9/17,0,0,0,0,0,0,0,0,letter,A,的,次数,B,的,次数,C,的,次数,如何确定每个字母在,letter,中的位置呢?,A,对应,letter0,B,对应,letter1,C,对应,letter2,下标:,0 A-A,下标:,1 B-A,下标:,2 C-A,3,数组应用,5,2024/9/17,#include ,#define NUM 26,int main( ),int letterNUM = 0;,char ch;,int i;,printf(nEnter text linen);,while (ch=getchar() != n) ,if (A=ch & ch=Z) /*,检测是否为大写字母 *,/,letterch-A = letterch-A+1;, else if (a=ch & ch=z) /*,检测是否为小写字母 *,/,letterch-a = letterch-a+1;,for (i=0; iNUM; i+) /*,输出每个英文字母出现的次数,*,/,printf(n%c:%d, A+i, letteri);,return 0;,lesson9_04.c,2024/9/17,3,课后练习,7,将一个数组逆序。,例如,输入,1 2 3 4 5 6 7 8 9 10,输出,10 9 8 7 6 5 4 3 2 1,从键盘输入,10,个数,求最大值和最小值的差,2024/9/17,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!