




已阅读5页,还剩90页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数组,5.1一维数组5.2二维数组5.3字符数组5.4多维数组5.5变长数组5.6数组应用举例,C语言程序设计,第2页,本章学习目标,理解数组的概念掌握数组的定义、初始化和引用掌握数组的应用数组作为函数参数掌握字符串的定义、初始化和引用掌握常用的字符处理函数能够编写较复杂的程序,C语言程序设计,第3页,1.什么是数组,nextpart,属于构造类型是有序的数据集合,用数组名标识。数组中的元素属于同一数据类型,用数组名和下标标识。,C语言程序设计,第4页,2.一维数组,nextpart,一维数组的定义一维数组元素的引用一维数组的初始化一维数组程序举例一维数组编程练习一维数组作为函数参数,go,go,go,go,go,go,C语言程序设计,第5页,一维数组的定义,类型说明符数组名常量表达式,(1)语法形式:,(2)说明:,数组名:遵循标识符命名规则常量表达式:包括直接常量和符号常量,用于表示数组元素的个数:下标运算符,example,C语言程序设计,第6页,inta6;,编译时分配连续内存内存字节数=数组元素个数*sizeof(元素数据类型),数组名表示内存首地址,是地址常量,一维数组定义实例:,例1:,注意:当定义一个长度为n的数组时,数组下标范围为0n-1!,C语言程序设计,第7页,#defineN6intaN;intbN*N;intcN*3+2;intcN+c;,例2:,intn=10;intan;,例3:,intn;scanf(“%d”,例4:,return,C语言程序设计,第8页,一维数组元素的引用,(1)语法形式:,数组名下标,(2)注意事项:,下标必须是整型常量或整型表达式下标值范围:0(数组元素个数-1)数组必须先定义,后使用。对于数值型数组,一次只能引用一个数组元素,example,C语言程序设计,第9页,一维数组元素引用实例:,floatscore50;score3=90;for(i=0;i50;i+)printf(“%f”,scorei);,floatscore50;score50=90;for(i=0;i=50;i+)printf(“%f”,scorei);,floatscore50;score3=90;printf(“%f”,score);,return,C语言程序设计,第10页,一维数组的初始化,在定义数组的同时,对其进行赋初值。,对一维数组进行初始化的若干情形:,(1)在定义数组时对所有数组元素赋初值,inta5=1,2,3,4,5;,inta5;a0=1;a1=2;a2=3;a3=4;a4=5;,也可以写成:,inta=1,2,3,4,5;,注:当给所有数组元素赋初值时,定义数组时可省略个数!,数组不初始化,其元素值为随机数对static数组元素不赋初值,系统会自动赋以0值,C语言程序设计,第11页,(2)在定义数组时对部分数组元素赋初值,inta5=1,2,3;,inta5;a0=1;a1=2;a2=3;a3=0;a4=0;,当希望给数组所有元素都赋值为0时可以这样写:,inta5=0;,错误的初始化:,inta3=1,2,3,4,5;,return,C语言程序设计,第12页,一维数组程序举例,例1:从键盘输入10个整数存入数组,找出其中最大值和最小值,例2:用数组求Fibonacci数列前20个数,例3:用起泡法对10个数排序(由小到大),例4:用选择法对10个数排序(由小到大),return,例1:从键盘输入10个整数存入数组,找出其中最大值和最小值,算法:,算法的c程序实现:,用自然语言描述:1.输入:for循环输入10个整数2.处理:(a)先令max=min=a0(b)依次用ai和max,min比较(循环)若maxai,令min=ai3.输出:max和min,#includeintmain()inta10,i,max,min;for(i=0;imax)max=ai;if(aimin)min=ai;printf(max=%dn,max);printf(min=%dn,min);return0;,return,例2:用数组求Fibonacci数列前20个数,(教材P133例7.2),#includeintmain()inti;intf20=1,1;for(i=2;ia2,则交换;依次类推比较第n-1个数和第n个数,若an-2an-1,则交换;经过(n-1)次比较后,最大的数被放在第n个元素位置上,即an-1第2趟:对前n-1个数进行第2趟起泡排序:经过(n-2)次比较后,次大的数被放在第n-1个元素位置,即an-2第n-1趟:对前2个数进行第n-1趟起泡排序:经过1次比较后,次小的数被放在第2个元素为之,即a1至此,排序过程结束。总结:用起泡法对n个数排序,共需要进行(n-1)趟,第j趟需要比较(n-j)次,将相邻两个数比较,较小的调到前头。,next,C语言程序设计,第16页,初始序列:,4312,(n=4),第1趟:,第2趟:,第3趟:,比较1:,3412,比较2:,3142,比较3:,3124,132,比较1:,比较2:,123,比较1:,12,next,输入n个数给a0到an-1,forj=0ton-2,fori=0ton-1-j,aiai+1,真,假,aiai+1,输出a0到an-1,#includeintmain()inta10;inti,j,t;for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;ib若ls,认为数组ay)flag=1;elseif(xbn);elseif(ls)printf(abn);elseprintf(a=bn);return0;,return,C语言程序设计,第29页,例8.11:有1个一维数组score,内放10个学生成绩,求平均成绩,要求:在主函数中输入10个成绩,并输出平均成绩编写函数对数组求平均值,C语言程序设计,第30页,floataverage(floatarray10)inti;floataver,sum=0;for(i=0;i10;i+)sum=sum+arrayi;aver=sum/10;return(aver);,/*函数定义*/,C语言程序设计,第31页,#includeintmain()floataverage(floatarray10);floatscore10,aver;inti;for(i=0;i10;i+)scanf(%f,C语言程序设计,第32页,floataverage(floatarray,intn)inti;floataver,sum=0;for(i=0;in;i+)sum=sum+arrayi;aver=sum/n;return(aver);,改进:,C语言程序设计,第33页,#includeintmain()floataverage(floatarray,intn);floatscore10,aver;inti;for(i=0;i10;i+)scanf(%f,/*函数调用*/,/*函数声明*/,C语言程序设计,第34页,例8.13:用选择法对数组中10个整数按由小到大排序,要求:在主函数中输入待排序的数组元素并输出排序后的数组元素编写函数对包含n个整数的数组进行排序,初始序列:(n=4),4312,第1趟:(i=1),第2趟:(i=2),第3趟:(i=3),4312,1342,342,243,43,34,C语言程序设计,第36页,voidsort(intarray,intn)inti,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(arrayjarrayk)k=j;t=arrayk;arrayk=arrayi;arrayi=t;,/*函数定义*/,C语言程序设计,第37页,#includeintmain()voidsort(intarray,intn);inta10,i;for(i=0;i10;i+)scanf(%d,return,C语言程序设计,第38页,3.二维数组,nextpart,二维数组的定义二维数组元素的引用关于二维数组元素的相关说明二维数组的初始化二维数组程序举例二维数组编程练习,go,go,go,go,go,go,C语言程序设计,第39页,二维数组的定义,类型说明符数组名常量表达式1常量表达式2,(1)语法形式:,行数,列数,元素个数=行数*列数,二维数组元素的引用,(1)语法形式:,数组名下标1下标2,例:定义:chara34;引用:a00,a12,注意:左例中,引用元素下标的范围为a00a23,return,C语言程序设计,第40页,关于二维数组元素的相关说明,(1)二维数组在机内的存贮方式:,按行存放,例:inta23;,a00,a01,a02,a10,a11,a12,C语言程序设计,第41页,(2)对二维数组的理解:,每个元素ai由包含4个元素的一维数组组成,二维数组a是由3个元素组成,return,C语言程序设计,第42页,初始化,对二维数组进行初始化的若干情形:,(1)分行初始化,(2)按数组元素排列顺序初始化,对所有元素,对部分元素,对所有元素,对部分元素,实例1-1,实例1-2,实例2-1,实例2-2,实例1-3,实例2-3,return,C语言程序设计,第43页,例1-1:分行初始化(对所有元素),return,C语言程序设计,第44页,例1-2:分行初始化(对部分元素),注:未赋值的数值型数组元素自动为0,return,C语言程序设计,第45页,例1-3:分行初始化(省略第一维),return,C语言程序设计,第46页,例2-1:按数组元素排列顺序初始化(对所有元素),return,C语言程序设计,第47页,return,例2-2:按数组元素排列顺序初始化(对部分元素),C语言程序设计,第48页,return,例2-3:按数组元素排列顺序初始化(省略第一维长度),C语言程序设计,第49页,二维数组程序举例,例1:将二维数组行列元素互换,存到另一个数组中,例2:求二维数组中最大元素值及其行列号,return,(教材P138例7.4),(1)问题分析:,数组a与数组b的元素满足关系:,bji=aij,例1:将二维数组行列元素互换,存到另一个数组中,(2)c代码实现:,#includeintmain()inta23=1,2,3,4,5,6;intb32;inti,j;for(i=0;i2;i+)for(j=0;j3;j+)bji=aij;printf(arrayais:n);for(i=0;i2;i+)for(j=0;j3;j+)printf(%5d,aij);printf(n);printf(arraybis:n);for(i=0;i3;i+)for(j=0;j2;j+)printf(%5d,bij);printf(n);return0;,return,(教材P138例7.5),(1)算法:,例2:求二维数组中最大元素值及其行列号,(2)c代码实现:,C语言程序设计,第53页,#includeintmain()inta34=1,2,3,4,9,8,7,6,-10,10,5,2;inti,j,row,column,max;max=a00;row=0;column=0;for(i=0;i3;i+)for(j=0;j4;j+)if(maxaij)max=aij;row=i;column=j;printf(max=%d,row=%d,column=%dn,max,row,column);return0;,return,C语言程序设计,第54页,二维数组编程练习,return,求两个矩阵的加、乘积计算一个矩阵各行、各列和所有元素之和将数组元素转置将数组按顺时针旋转90度,C语言程序设计,第55页,例读入下表中值到数组,分别求各行、各列及表中所有数之和,#includeintmain()intx54,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(%5dt,xij);printf(n);return0;,C语言程序设计,第56页,4.字符数组,nextpart,字符数组的定义字符数组元素的引用字符数组的初始化字符串和字符串结束标志字符数组的输入输出字符串处理函数字符数组程序举例,go,go,go,go,go,go,go,C语言程序设计,第57页,字符数组的定义,字符数组元素的引用,字符数组的初始化,(1)逐个字符初始化,(2)用字符串常量初始化,定义方法同一般数组,如:chara10;charb310;,引用字符数组元素方法同一般数组,如:a2=*;b21=k;,example,应用实例分析,example,return,字符数组初始化实例:逐个字符初始化,对所有元素,对部分元素,注:未赋值的字符数组元素自动定为空字符0!,return,字符数组初始化实例:用字符串常量初始化,对所有元素,对部分元素,对于字符串常量,系统会在末尾自动加一个0作为结束符!,return,字符数组定义、初始化、引用实例分析,(1)一维字符数组举例:输出一个字符串,(教材P141例7.6),#includeintmain()charc10=I,a,m,a,b,o,y;inti;for(i=0;i10;i+)printf(%c,ci);printf(n);return0;,字符数组定义、初始化、引用实例分析,(2)二维字符数组举例:输出一个菱形图,(教材P142例7.7),#includeintmain()chardiamond5=,*,*,*,*,*,*,*,*;inti,j;for(i=0;i0,strcmp(str1,str2)0)strcpy(maxstr,str1);elsestrcpy(maxstr,str2);if(strcmp(str3,maxstr)0)strcpy(maxstr,str3);puts(maxstr);return0;,运行结果:,运行结果:,#include#includeintmain()charstr320;charmaxstr20;inti;for(i=0;i0)strcpy(maxstr,str0);elsestrcpy(maxstr,str1);if(strcmp(str2,maxstr)0)strcpy(maxstr,str2);puts(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 证券从业资格证相关资讯通知试题及答案
- 2025年证券投资理念发展试题及答案
- 如何成功通过证券从业资格证考试的试题及答案
- 廉政承诺书内容
- 标新立异的工作方案计划
- 国际业务发展月度工作计划
- 2025年注册会计师考试中时间分配策略的重要性试题及答案
- 资格认证考试复习重点试题及答案
- 品牌与用户生命周期分析计划
- 行政管理师知识理解提升试题及答案
- 《民宿管家》课件-民宿管家之预订接待
- MOOC 软件质量保证-西安交通大学 中国大学慕课答案
- 24春国家开放大学《农业推广》形考任务1-5参考答案
- 新教科版五下科学1.5《当环境改变了》教学设计
- 郑州工业应用技术学院单招《职测》参考试题库(含答案)
- 提醒纳米颗粒对环境的影响
- 血液科护士的造血干细胞移植护理
- HGE系列电梯安装调试手册(ELS05系统SW00004269,A.4 )
- 护理教学查房组织与实施
- 小学五年级家长会课件
- 机动车检测站仪器设备日常维护和保养作业指导书
评论
0/150
提交评论