C语言第六章_数组_2

上传人:小*** 文档编号:243158353 上传时间:2024-09-17 格式:PPT 页数:27 大小:613.50KB
返回 下载 相关 举报
C语言第六章_数组_2_第1页
第1页 / 共27页
C语言第六章_数组_2_第2页
第2页 / 共27页
C语言第六章_数组_2_第3页
第3页 / 共27页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,类型说明符,数组名,常量,;,内存,映象:,编译时分配,一片连续的内存空间,,数组名为该空间的首地址,常量地址,。,a,a5,5,a4,4,a3,3,a2,2,a1,1,a0,0,例如:,int,a6,;,一,.,一维数组定义,数组是具有一定顺序的若干,同数据类型,变量,的,集合体,。,数组要有名称,要有规模,。,a = = &a0,1,数组元素变量表示形式:,数组名,下标,其中:下标可以是,整型常量或整型,表达式,二,.,一维数组的引用,只能逐个引用,数组元素变量,,不能一次引用整个数组,例:,int,a10,;,printf,(“%d”,,,a),;,例:,a0=a5+a7-a2*3,;,/*,常量做下标*,/,a,i,=a,i,+1,;,/*,表达式做下标*,/,数组必须,先定义,后使用,2,例,1,:读程序。,main(),int,i,,,a10,;,for (i=0,;,i=0,;,i-),printf,(“%d ”,,,ai),;,9 8 7 6 5 4 3 2 1 0,定义数组,引用数组,3,例,2,:读程序,写结果。,main(),int,i,,,a10,,,k=0,;,for (i=0,;,i10,;,i+),ai=i,;,for (i=1,;,i4,;,i+),k+=ai+i,;,printf,(“%d ”,,,k),;,4,定义数组的同时,给数组元素变量赋初值。,例:,int,a5=2,,,4,,,6,,,8,,,10,;,(1),初始数据多于数组规模时语法错误。,例:,int,a5=2,,,4,,,6,,,8,,,10,,,12,;,(),(2),初始数据少于数组元素个数时,,多出的数组元素赋,零,值。,例,1,:,int,a5 = 2,,,4,,,6,;,例,2,:,int,a10 = ,;,区别于,:,int,a10,;,(3),对, ,中的数字可以省,数组元素个数由初始值个数决定。,int,b = 8,,,21,,,13,,,7,;,注,:,三,.,一维数组初始化,5,#include,void main(void ),int,a10,,,k,,,sum=0,;,for(k=0,;,k10,;,k+),scanf(“%d”,,,&ak,),;,for(k=0,;,k10,;,k+),sum+=a,k,;,printf(“Average is %f n”,,,sum/10.0),;,92 85 68 75 54 88 98 45 61 79,92,85,68,54,88,98,45,75,61,79,0,1,2,3,4,5,6,7,8,9,a,例,1,:读入,10,个学生的成绩存于数组,求平均成绩。,四,.,一维数组的应用,6,for (i=0,,,j=n-1,;,ij,;,i+,,,j-),t=a,i,;,ai=aj,;,aj=t,;,分析,:,1.,a0,与,a9,交换,,a1,交换,a8,,,依此类推。,例,2,:读入,10,个整数存于数组并输出;将数组中的元素颠倒顺序排放后再输出。,2.,如何控制循环,?,92,85,68,54,88,98,45,75,61,79,a,79,61,45,88,54,75,68,98,85,92,或,:,n=10;,for (i=0,;,in/2,;,i+),t=a,i,;,a,i,=a,n-i-1,;,a,n-i-1,=t,;,i,j,i,j,i,j,只需循环到一半,.,i,j,i,j,7,#include,main(),int,i,,,j,,,a10,,,t,;,for (i=0,;,i=9,;,i+),scanf,(“%d”,,,&ai,),;,for (i=0,;,i=9,;,i+),printf,(“%d,,”,,ai,),;,for,(i=0,,,j=9,;,ij,;,i+,,,j-,), t=ai,;,ai=aj,;,aj= t,;,for (i=0,;,i=9,;,i+),printf,(“%d,,”,,ai,),;,8,f,0,=1 (n=0),f,1,=1 (n=1),f,n,=f,n-1,+f,n-2,(n,2),f0,f1,f2,f3,f4,f5,f19,.,1,1,f19,0,1,4,5,2,3,19,2,3,5,#include,main(),int,i,;,long f 20=1,1,;,for(i=2,;,i20,;,i+),fi=fi-2+fi-1,;,for(i=0,;,i20,;,i+),if(i%4=0),printf,(n),;,printf(%12,l,d,,,fi),;,例,3,:用数组求,Fibonacci,数列前20个数,9,步骤,:,1.,输入,:,用,for,循环输入10个整数,存于数组,2.,处理,:,(a),先令,max=min=a0,(b),依次用,ai,和,max,min,比较(循环),若,maxai,令,min=a,i,3.,输出:,max,和,min,例,4,:读,10,个整数存入数组,找出其中,最大值,和,最小值。,#include,void main(void),int a,10,,,max,,,min,,,i,;,printf,(“,输入,10,个整数,:n),;,for(i=0,;,i10,;,i+) scanf(“%d”,,,&,ai),;,max=min=a0,;,for(i=1,;,i10,;,i+),if(maxai) min=ai,;,printf(“,最大值为:,%dn”,,,max),;,printf(“,最小值为:,%dn”,,,min),;,10,例,5,:读入,10,个整数给数组,找出,10,个数中最大值所在的,位置,。,#include,main(),int,a10,,,i,,,k,;,for (i=0,;,i=9,;,i+),scanf,(“%d”,,,&ai,),;,k=0,;,for (i=1,;,iak),k=i,;,for (i=0,;,i=9,;,i+),printf,(“,%dt,”,,,ai,),;,printf,(“,max=%d,,,locate=%dn,”,,,ak,,,k,),;,11,排序过程:,(,对,n,个整数排序,),比较第一个数与第二个数,把较大的数放后面,;然后比较第二个数与第三个数,,仍把,较大的数放后面,;依次类推,直至第,n-1,个数和第,n,个数比较完为止结果,最大,的数被安置在最后的位置上,,这,就完成了,第一趟冒泡排序,。,对前,n-1,个数进行第二趟冒泡排序,结果使,次大的,数被安置在第,n-1,个元素位置,。,重复上述过程,共经过,n-1,趟冒泡排序后,排序结束,。,例,6,:用起泡法对,8,个整数按从小到大的顺序,排序,.,12,49,38,65,97,76,13,27,30,第一趟,k=1,38,49,65,76,13,27,30,97,第二趟,k=2,38,49,65,13,27,30,76,97,第三趟,k=3,38,49,13,27,30,65,76,97,第四趟,k=4,38,13,27,30,49,65,76,97,第五趟,k=5,13,27,30,38,49,65,76,97,第六趟,k=6,13,27,30,38,49,65,76,97,第七趟,k=7,38,49,76,97,13,97,27,97,13,76,27,76,13,65,27,65,13,49,27,49,13,38,27,38,49,38,65,97,76,13,27,30,初始值,N=8,a0,a1,a2,a3,a4,a5,a6,a7,97,30,a7,76,30,a6,65,30,a5,49,30,a4,38,30,a3,30,a2,27,a1,13,第,1,趟排序,(k=1),:,从第,1,个元素开始两两比较,最大的数被放在最后,for (i=0,;,iai+1),temp=ai,;,ai=ai+1,;,ai+1=temp,;,第一次循环后,a7,是最大的。,第,2,趟排序,(k=2),:,for (i=0,;,iai+1),temp=ai,;,ai=ai+1,;,ai+1=temp,;,i=8-1,-1,;,i=8-1,-2,;,在第,k,趟排序比较时,:,i=8-1,-k,8,个数组元素排序:,14,#include,main(),/*,对,10,个整数排序*,/,int,a10=9, 8, 5, 4, 2, 0, 6, 1, 3, 7, i, k,;,for (k=1,;,k10,;,k+),for (i=0,;,iai+1), temp=ai,;,ai=ai+1,;,ai+1=temp,;,for (i=0,;,i10,;,i+),printf(“%3d”,,,ai),;,15,例,7: 100,名同学被学校食堂邀请来为某一种食品打分,分数分为从,1,到,10,的,10,个等级,(1,分最低分, 10,表示最高分,),,统计调查结果并输出。,分析,:,(1),需要,10,个计数器用于统计,:,int,count11=0;,(2),循环,100,次,(i,从,1100),第,i,次读一个,整数,n,作为第,i,个同学打的分数,,,之后将该分数对应下标的数组元素加,1,。,countn+,n=1 count1+,n=2 count2+,n=10 count10+,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,c1 c2 c3 c10,16,main(),int,count11=0,;,int,i,,,n,;,for (,i=1,;,i=100,;,i+,),scanf,(“%d”,,,&n,),;,countn+,;,for (i=1,;,i=10,;,i+),printf,(“%d:,%dn,”,,,i, counti),;,问,:,如何实现读入一串大写字符,以字符,?,结束,统计每个字母出现的次数。,int,count26=0;,int,n,;,char,ch,;,while(,(,ch=getchar,( ),)!=?),n=ch,-A,;,for (,ch=A,;,ch,=Z,;,ch+,),printf,(“%c:,%dn,”,,,ch, count,ch,-A),;,17,在数学中我们常常会用到矩阵 ,它的结构如下:,怎样用一种数据结构来表示矩阵呢?,6.2 多维数组,思考问题,?,18,2.,二维数组元素变量的引用,:,数组名,行表达式,列表达式,1.,定义方式:,数据类型,数组名,整型常量,1,整型常量,2,;,例:,float f34,;,int,myarray,59,;,一,.,二维数组的定义和引用,行数,列数,元素个数,=,行数*列数,下标从,0,开始,下标从,0,开始,19,内存,映象:,编译时为二维数组分配,一片连续的内存空间,一行一行地存储所有的数组元素,,数组名为该空间的首地址,地址常量。,例,int,a34,;,a00 a01 a02 a03,a10 a11 a12 a13,a20 a21 a22 a23,0,1,4,5,2,3,a01,a00,a23,6,7,10,11,8,9,a,a02,a03,a10,a11,a13,a20,a21,a22,a12,a,与,&a00,相同,二,.,二维数组元素的存放顺序,20,三,.,二维数组的初始化,按元素排列顺序初始化,例,int a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,例,int a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,0,4,0,0,部分初始化,例,int a3=,1,4,5,;,a00,a01,a02,a10,a11,a12,1,0,0,4,5,0,第一维,长度省略初始化,例,int a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,分行初始化,例,int a3=,1,2,3,4,5,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,0,第一维,长度省略初始化,例,int a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,4,0,0,0,部分初始化,21,k=1;,for(i=0;i4;i+),for(j=0;j4;j+),aij = k+;,四,.,二维数组程序举例,(3),由循环变量自动赋值,1 2 3 4,5 6 7 8,9 10 11 12,13 14 15 16,如何读入,6,个数据?,例,1,: 在程序中使数组获得值的方法。,(1),初始化数组:,int,a23,=,1,2,3,4,5,6,;,(2),用,scanf,语句由用户输入,int,a23,for(i=0,;,i2,;,i+),for (j=0,;,j3,;,j+),scanf,(“%d”,,,&aij),;,缺点,:,数据相对固定,缺点,:,当数组规模较大时,需要读入的数据会很多,22,例,1,:在一个二维数组中,找出最大的元素值以及最大元素的行下标和列下标,并输出该数组,#inlcude,main(),int,a32,row,col, i, j;,for(i=0; i3; i+),for(j=0; j2; j+),scanf,(“%d”, ,row = 0;,col,= 0;,for(i=0; i3; i+),for(j=0; j2; j+),if (arow,col,aij), row = i;,col,= j; ,printf,(“,最大值为,a%d%d,=%dn,”, row,col, arow,col,);,23,例,2,:输出一个二维数组。,int,a23,=,1,,,2,,,3,,,4,,,5,,,6,;,for(i=0,;,i2,;,i+),for (j=0,;,j3,;,j+) printf(“%5d”,,,aij,),;,printf,(“n”),;,例,3,:将二维数组行列元素互换后存到另一个数组中。,int,a23=1,2,3,,,4,5,6,;,int,b32,,,i,,,j;,for(i=0,;,i2,;,i+),for(j=0,;,j3,;,j+),bji=aij,;,24,例,4,:,求,NN,阶矩阵的主对角线元素之和,#include,#define,N 3,main(),int,aNN, sum=0, i, j;,for(i=0; iN; i+),for(j=0; jN; j+),scanf,(“%d”, ,for(i=0; in; i+),sum = sum + aii;,printf,(“,%dn,”, sum);,25,用户名:,wu2010c,密 码:,201012345,第,1,章到第,5,章单选题和填空题答案下载地址:,26,1.,编程:读入,10,个字符,将它们按降序的顺序用冒泡法排序后输出。,2.,编程:为比赛选手评分。读入,10,名评委的给分,从中扣除一个最高分,扣除一个最低分,输出这个选手的最后得分(打分采用百分制)。,3.,编程:输入一个,5,位自然数,输出该自然数的各位数字组成的最大数。例如,输入,15937,,则输出为,97531,。,第六章上机补充题,27,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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