C语言教案:第5章数组.ppt

上传人:tia****nde 文档编号:11495347 上传时间:2020-04-25 格式:PPT 页数:49 大小:591KB
返回 下载 相关 举报
C语言教案:第5章数组.ppt_第1页
第1页 / 共49页
C语言教案:第5章数组.ppt_第2页
第2页 / 共49页
C语言教案:第5章数组.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
2020/4/25,1,第五章数组,2020/4/25,2,5.1数组的概念,5.2数组的定义和初始化,5.3数组的赋值、输入和输出,5.4字符型数组,5.5数据处理,2020/4/25,3,5.1数组的概念,二、为什麽引入数组,1、存储批量数据,2、体现数据间的关系,3、便于访问、处理,一、什麽是数组,数组是一组有序的、同类型数据的集合。,三、名词解释,数组,数组元素,数组维数,2020/4/25,4,5.2数组的定义和初始化,一、数组的定义,目的:,名称,类型,维数,大小,格式:,说明:,1、常量表达式仅可为整型常量/符号常量;值大于0。,2、表达式的个数表明数组的维数。,2020/4/25,5,例:,inta10;,floatb34;,charc30;,inta30;,inti=3,j=4;intaij;,二、数组元素的引用,引用格式:,说明:,1、表达式(下标)值从0开始。,2、数组名代表该数组在内存中的首地址。,2020/4/25,6,三、数组的存储结构,一维数组:,从左到右顺序存放,例:,定义inta5;,数组中数据为,2、4、23、6、78,a0,a1,a2,a3,a4,设数组起始地址为2000,则数组元素依次存入:,2000、2002、2004、2006、2008单元,2020/4/25,7,b00,b01,b02,b10,b11,b12,二维数组:,按行存放,例:,定义floatb23;,数组中数据为,.37.23.44.45.16.2,设数组起始地址为2000,则各数组元素依次存入,2000、2004、2008、2012、2016、2020单元,2020/4/25,8,四、数组的初始化,1、一维数组的初始化,intdata8=50,30,82,12,23,34,55,10;,说明:,(1)常量个数少于数组元素个数,则自动以0补充。,(2)常量个数多于数组元素个数,则出错。,(3)可隐含定义数组大小。,inta=0,1,2,3,4,5,0;,(4)号中值可以省略,但逗号不能省。,floatarray5=,2,3,4,;,2020/4/25,9,2、二维数组的初始化,intdata33=5,3,8,2,3,34,5,10,6;,说明:,(1)可对数组进行部分初始化,未初始化部分则自动清零。,intdata33=5,3,8,2,3,34,5,10,6;,或:,例:,比较下面两种初始化情况,inta23=5,6,7,8;,inta23=5,6,7,8;,2020/4/25,10,(2)可以省略第一维长度,但第二维长度不可省。,例:,inta4=1,2,3,4,5,6,7,8;,inta2=1,2,3,4,5,6,7,8;,2020/4/25,11,5.3数组的赋值、输入和输出,一、数组的赋值,常用赋值方法:,1、无规律数据,各元素分别赋值,2、有规律数据,利用循环进行赋值,一维数组用单循环,二维数组用双循环,例:,inta5,i;for(i=0;i5;i+)ai=(i+1)*100;,intb23,i,j;for(i=0;i2;i+)for(j=0;j3;j+)bij=i+j;,2020/4/25,12,(1)只能对数组元素赋值,不能对数组名实施整体赋值。(字符数组除外),注意:,如:,inta5,i;a=100,200,300,400,500);,(2)注意下标界大小。,如:,intb23,i,j;for(i=0;i=2;i+)for(j=0;j=3;j+)bij=i+j;,2020/4/25,13,二、数组的输入输出,floatx10;intk;for(k=0;k10;k+);scanf(“%f”,1、数组输入,2、数组输出,:for(i=0;i3;i+)for(j=0;j4;j+)printf(“%6.2f”,bij);printf(“n);:,2020/4/25,14,三、应用举例,例1:(p191例6.2),例2:(p188例题6.1),设有矩阵,2345678,(1)将其存入数组,(2)并以以下矩阵形式,15263748,存入另一数组,(3)分别输出两数组,例3:,要求编程实现:,2020/4/25,15,问题分析:,1、定义数组,2、将数据送入a数组,a24、b42,3、根据数据排列的情况将a数组数据赋予b数组,a、b数组间关系为:,bji=aij,4、分别输出a、b数组数据,a的行=b的列,a的列=b的行,2020/4/25,16,根据分析编写程序如下:,for(i=0;i2;i+)for(j=0;j4;j+)bji=aij;,main(),inta24=1,2,3,4,5,6,7,8,b42,i,j;,for(i=0;i2;i+)for(j=0;j4;j+)printf(“%dt”,aij);,printf(“n”);,printf(“n”);,printf(“%dt”,bji);,2020/4/25,17,设有矩阵,例4:,0123451234562345673456784567895678910,(1)将矩阵存入一个二维数组,要求:,(2)将二维数组中的数据送入一个一维数组,(3)分别输出两个数组,2020/4/25,18,问题分析:,1、定义数组,2、将数据送入a数组,a66、b36,bk=aij,4、分别输出a、b数组数据,3、将a数组数据赋予b数组,a数组的数据可自动生成,aij=i+j,2020/4/25,19,根据分析编写程序如下:,for(i=0;i36;i+),main(),inta66,b36;,for(i=0;i6;i+)for(j=0;j6;j+),printf(“n”);,printf(“%d”,bi);,inti,jk=0;,K+;,aij=i+j;,bk=aij;,printf(“%dt”,aij);,printf(“n”);,2020/4/25,20,5.4字符型数组,元素类型为字符的数组,两种用法:,(1)作为字符(单个字符操作),(2)作为字符串(整体操作),一、字符数组的初始化,1、用字符对字符数组初始化,2、用字符串常量对字符数组初始化,charstr26=HELLO;,charstr15=T,h,e,;,2020/4/25,21,说明:,(1)字符串以0作为结束标志。,(2)初始化时也可省略花括号。,charpanic=HELLO;,(3)注意字符与字符串的区别。,单引号,双引号,用0作为串的结束标志,无结束标志,长度=字符个数,长度=字符个数+1,2020/4/25,22,应用举例:,例1:作为普通数组处理,main()charary110=P,L,O,T,ary210;charch;inti,j;for(i=0;i4;i+)printf(“%c”,ary1i);printf(“请输入一行字符n”);for(i=0;i10;i+)scanf(“%c”,2020/4/25,23,例2:作为字符串处理,main()charary110=“PLOT”,ary210;printf(“%s”,ary1);printf(“请输入一行字符n”);scanf(“%s”,ary2);printf(“%s”,ary2);,注意:,Printf、scanf处理字符串数组时可使用数组名作为函数参数。,2020/4/25,24,二、字符串的输入,1、用scanf函数加%s控制,charstr30;scanf(%s,str);,例:,注意:,(1)输入的字符串中不能有空格。,(2)要保证字符数组的长度足够大。,(3)数组名前不能加printf(“请输入一个姓名:);scanf(%s,name1);printf(“n读入的名字是:%sn,name1);,例1:,请输入一个姓名:,于航,读入的名字是:,于,2020/4/25,27,#include#defineLEN80main()charnameLEN;printf(你好,请输入姓名:);gets(name);printf(“n%s:你的名字真好n,name);,例2:,你好,请输入姓名:,于航,于航:你的名字真好,2020/4/25,28,三、字符串的输出,1、用printf函数加%s控制,charstr=“Thisisabook.”;printf(“n%s,str);,例:,2、用puts函数,调用格式:,其中:,参数可以是字符串常量/字符串变量。,2020/4/25,29,puts与printf()的不同:,1、puts()函数专门用于字符串输出,printf()函数用于各种类型数据输出,2、puts()函数输出后自动换行。,printf()函数必须用“n”强行换行。,建议:,多种类型的混合输入输出时,选用scanf和printf;,当大量文字信息输入输出时,使用gets和puts。,2020/4/25,30,例:,#include#definePR这是预定义字符串main()charstr=这是初始化字符串puts(这是直接使用字符串常量);puts(PR);puts(str);,输出:,这是直接使用字符串常量,这是预定义字符串,这是初始化字符串,2020/4/25,31,四、字符串处理函数,函数原型存放在string.h文件中。,1、strlen函数,测试字符串的长度,2、strcat函数,连结两个字符串,3、strcmp函数,比较两个字符串的大小,4、strcpy函数,字符串的拷贝,2020/4/25,32,例:密码检查程序,#include#include#defineSIZE80#definePASSWORDWang#defineTIMES3,main()inttry=0;charinputSIZE;,puts(请输入密码);,2020/4/25,33,dogets(input);if(strcmp(input,PASSWORD)!=0)puts(密码输入错,请再试一次);elsebreak;while(+tryTIMES);,if(try=5|xA(2)不换,否则对调::,p193,2020/4/25,40,2、“冒泡”排序法,特点:逐个对数组中每相邻二数进行比较,例1:,设数据存于A数组中,按降序排。,A(0)与A(1)比A(0)A(1)不换,否则对调A(1)与A(2)比A(1)A(2)不换,否则对调:A(n-2)与A(n-1)比A(n-2)A(n-1)不换,否则对调,2020/4/25,41,例:有一组学生平均成绩如下表,将其按从大小排序,83.883.585.88078.283.885.883.58085.883.883.585.883.885.8,比较圈数,每圈比较的次数,结论:,n个数需n-1圈的比较,i=1ton-1,每圈需n-i次比较,j=1ton-i,2020/4/25,42,“冒泡”法排序for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;,2020/4/25,43,2、“选择”排序法,例1:,有5个随机数如下,用“选择”排序法从小到大排序。,特点:不断在数组中寻找基准数据,2020/4/25,44,2971585431293158547129315458712931545871,比较圈数,每圈比较次数及基准变化,结论:,n个数需n-1圈,i=1ton-1,每圈需比较:,j=i+1ton,2931545871,5471582931,2020/4/25,45,for(i=0;iaj)p=j;if(p!=i)t=ai;ai=ap;ap=t;,“选择”排序法的结构形式:,例:,给出一组国家名称,利用“选择”法排序。,2020/4/25,46,三、数据查询,1、顺序查询:,2、两分法查询:,要求数据排列有序,速度快,对数据排列无要求,速度慢,查询过程:,(1)将数列对分,找出中间数据,(2)用此数据与要查的数据比较,(3)数值相等则结束查询,否则根据比较结果继续对分数列,(4)重复以上过程,直到找到该数据,2020/4/25,47,应用举例:,例1:,顺序查询,例2:,快速查询,2020/4/25,48,四、数组元素的插入、删除,1、插入数据,插入过程:,(1)确定数据插入位置,(2)向后移动原数组元素(ai+1=ai),(3)将数据插入到指定下标元素中,2、删除数据,删除过程:,(1)确定数据删除位置,(2)向前移动原数组元素(ai=ai+1),2020/4/25,49,第六章习题,6.1、6.3、6.5、6.8、6.13,
展开阅读全文
相关资源
相关搜索

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


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

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


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