算法语言与数据结构第4章.pptx
《算法语言与数据结构第4章.pptx》由会员分享,可在线阅读,更多相关《算法语言与数据结构第4章.pptx(54页珍藏版)》请在咨信网上搜索。
1、算法算法语言言与数与数据据结构构信息信息与与物流管理系物流管理系王健王健西安财经学院管理学院西安财经学院管理学院西安财经学院管理学院西安财经学院管理学院信息信息与与物流管理系物流管理系第四章选择、排队问题的解题思路 与 数据组织信息信息与与物流管理系物流管理系中秋佳节,有贵客来到草原,主人要从羊群中选一只肥羊宴中秋佳节,有贵客来到草原,主人要从羊群中选一只肥羊宴请宾客,当然要选最重者。这样就要记录每只羊的重量,如果有成千请宾客,当然要选最重者。这样就要记录每只羊的重量,如果有成千上万只羊,不可能用一般变量来记录。可以用带有下标的变量,也就上万只羊,不可能用一般变量来记录。可以用带有下标的变量,
2、也就是这里要讲的是这里要讲的数组数组。问题:哪只羊最重?问题:哪只羊最重?我们先看例子:用键盘输入我们先看例子:用键盘输入10只羊的重量存放到只羊的重量存放到一个名为一个名为sheep的数组中的数组中信息信息与与物流管理系物流管理系/*/*/*/*程序名:程序名:程序名:程序名:4_1.c4_1.c(数组示例)(数组示例)(数组示例)(数组示例)*/*/*作作作作 者:者:者:者:wuwh *wuwh */*/*编制时间:编制时间:编制时间:编制时间:20022002年年年年9 9月月月月2020日日日日 */*/*主要功能:找出最重的羊主要功能:找出最重的羊主要功能:找出最重的羊主要功能:找
3、出最重的羊 */*/*#include#include/预编译命令预编译命令预编译命令预编译命令void main()void main()/主函数主函数主函数主函数 float sheep10;float sheep10;/数组,有数组,有数组,有数组,有1010个浮点类型元素,个浮点类型元素,个浮点类型元素,个浮点类型元素,/用于存用于存用于存用于存1010只羊每一只的重量只羊每一只的重量只羊每一只的重量只羊每一只的重量 for(i=0;i10;1+)sheepi=0;/for(i=0;i10;1+)sheepi=0;/初始化数组元素为初始化数组元素为初始化数组元素为初始化数组元素为0 0
4、float bigsheep=0.0f;float bigsheep=0.0f;/浮点类型变量,存放最肥羊的重量浮点类型变量,存放最肥羊的重量浮点类型变量,存放最肥羊的重量浮点类型变量,存放最肥羊的重量int bigsheepNo=0;int bigsheepNo=0;/整型变量,整型变量,整型变量,整型变量,i i 用于计数循环,用于计数循环,用于计数循环,用于计数循环,/bigsheepNo/bigsheepNo用于记录最肥羊的号用于记录最肥羊的号用于记录最肥羊的号用于记录最肥羊的号 信息信息与与物流管理系物流管理系for(i=0;i10;i=i+1)for(i=0;i10;i=i+1)/
5、计数循环计数循环计数循环计数循环 /循环,开始循环,开始循环,开始循环,开始printf(printf(请输入羊的重量请输入羊的重量请输入羊的重量请输入羊的重量);/);/提示用提示用提示用提示用scanf(“%f”,&sheepi);scanf(“%f”,&sheepi);/输入第输入第输入第输入第i i只羊的重量只羊的重量只羊的重量只羊的重量if(bigsheep sheepi)if(bigsheep sheepi)/如果第如果第如果第如果第i i只羊比当前最肥羊大只羊比当前最肥羊大只羊比当前最肥羊大只羊比当前最肥羊大 bigsheep=sheepi;bigsheep=sheepi;/让第
6、让第让第让第i i只羊为当前最肥羊只羊为当前最肥羊只羊为当前最肥羊只羊为当前最肥羊bigsheepNo=i;bigsheepNo=i;/纪录第纪录第纪录第纪录第i i只羊的编号只羊的编号只羊的编号只羊的编号 /循环结束循环结束循环结束循环结束/输出最肥羊的重量输出最肥羊的重量输出最肥羊的重量输出最肥羊的重量 printfprintf(“最肥羊的重量为最肥羊的重量为最肥羊的重量为最肥羊的重量为%ft“,bigsheep);%ft“,bigsheep);/输出该羊的编号输出该羊的编号输出该羊的编号输出该羊的编号 printfprintf(“最肥羊的编号为最肥羊的编号为最肥羊的编号为最肥羊的编号为%
7、dn“,bigsheep%dn“,bigsheepNoNo););信息信息与与物流管理系物流管理系程程 序序 框框 图图信息信息与与物流管理系物流管理系第4章 目录 4.14.1数组的概念数组的概念数组的概念数组的概念1 1 4.24.2 一维数组一维数组2 2 4.34.3 二维及多维数组二维及多维数组二维及多维数组二维及多维数组3 3 4.44.4 字符数组字符数组字符数组字符数组4 4 综合举例综合举例综合举例综合举例5 5信息信息与与物流管理系物流管理系数组是具有一定顺序关系的若干相同类型变量的集合体,组数组是具有一定顺序关系的若干相同类型变量的集合体,组数组是具有一定顺序关系的若干相
8、同类型变量的集合体,组数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素成数组的变量称为该数组的元素成数组的变量称为该数组的元素成数组的变量称为该数组的元素 数组元素在内存中顺次存放,它们的地址是连续的数组元素在内存中顺次存放,它们的地址是连续的数组元素在内存中顺次存放,它们的地址是连续的数组元素在内存中顺次存放,它们的地址是连续的数组名字是数组首元素的内存地址数组名字是数组首元素的内存地址数组名字是数组首元素的内存地址数组名字是数组首元素的内存地址数组名是一个常量,不能被赋值数组名是一个常量,不能被赋值数组名是一个常量,不能被赋值数组名是一个常量,不能被赋值4.
9、1.1数组的概念数组的概念4.1 数数组的概念的概念信息信息与与物流管理系物流管理系4.1.2数组的应用领域数组的应用领域数组的应用领域很广数组的应用领域很广 数组有一维,二维至更多维的数组,但对于大容量的计算,多维数组是数组有一维,二维至更多维的数组,但对于大容量的计算,多维数组是必需的,如力学计算,地基计算,空气动力学计算等,均要用到多维数组必需的,如力学计算,地基计算,空气动力学计算等,均要用到多维数组。4.1 数组的概念数组的概念信息信息与与物流管理系物流管理系 4.2.1 一维数组的定义与引用一维数组的定义与引用一维数组的定义一维数组的定义一维数组的定义一维数组的定义类类型型型型说说
10、明符明符明符明符 数数数数组组名名名名 常量表达式常量表达式常量表达式常量表达式 ;可以是常量和符号常量,不能用可以是常量和符号常量,不能用可以是常量和符号常量,不能用可以是常量和符号常量,不能用变变量。量。量。量。例如:例如:例如:例如:int a10 int a10 表示表示表示表示 a a 为为整型数整型数整型数整型数组组,有,有,有,有1010个元素:个元素:个元素:个元素:a0.a9a0.a9引用引用引用引用 必必必必须须先定先定先定先定义义,后使用。,后使用。,后使用。,后使用。只能逐个引用数只能逐个引用数只能逐个引用数只能逐个引用数组组元素,而不能一次引用整个数元素,而不能一次引
11、用整个数元素,而不能一次引用整个数元素,而不能一次引用整个数组组例如:例如:例如:例如:a0=a5+a7-a2*3a0=a5+a7-a2*34.2 一维数组一维数组信息信息与与物流管理系物流管理系4.2.2 定定义数数组的注意事的注意事项 不能用变量定义数组大小不能用变量定义数组大小不能用变量定义数组大小不能用变量定义数组大小如如如如 int n;int n;scanf(“%d”,&n);n scanf(“%d”,&n);n是变量是变量是变量是变量 int an;int an;数组中的数组中的数组中的数组中的n n是变量是变量是变量是变量4.2 一维数组一维数组信息信息与与物流管理系物流管理系
12、 4.2.3 一一维数数组的初始化的初始化可以在编译阶段使数组得到初值:可以在编译阶段使数组得到初值:可以在编译阶段使数组得到初值:可以在编译阶段使数组得到初值:在定在定在定在定义义数数数数组时对组时对数数数数组组元素元素元素元素赋赋以初以初以初以初值值。例如:例如:例如:例如:static int a10=0,1,2,3,4,5,6,7,8,9;static int a10=0,1,2,3,4,5,6,7,8,9;可以只可以只可以只可以只给给一部分元素一部分元素一部分元素一部分元素赋赋初初初初值值例如:例如:例如:例如:static int a10=0,1,2,3,4;static int
13、a10=0,1,2,3,4;后后后后5 5个数个数个数个数为为0 static int 0 static int b10=,1,3,5;b10=,1,3,5;不能不能不能不能给给数数数数组组整体整体整体整体赋赋初初初初值值 例如:例如:例如:例如:static int a10=0,0,0,0,0,0,0,0,0,0 static int a10=0,0,0,0,0,0,0,0,0,0 合法合法合法合法 static int q10=0*10 static int q10=0*10 非法定非法定非法定非法定义义 在在在在对对全部数全部数全部数全部数组组元素元素元素元素赋赋初初初初值时值时,可以不
14、指定数,可以不指定数,可以不指定数,可以不指定数组长组长度度度度例如:例如:例如:例如:static int a=1,2,3,4,5static int a=1,2,3,4,5 如果不如果不如果不如果不赋值赋值,则则全部自全部自全部自全部自动赋动赋0 04.2 一维数组一维数组信息信息与与物流管理系物流管理系例例4-1 用数组来处理求用数组来处理求Fibonacci数列的问题,程序如下数列的问题,程序如下:main()int i;static int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i1 0 0 0 03 0 0 0 05 0 0 0 0
15、a35=1,0,0,3,0,2,5=1 0 0 0 00 0 3 0 00 2 5 0 0a35=1,2,3=1 0 0 0 02 3 0 0 00 0 0 0 0 a35=1,2,3=1 0 0 0 00 0 0 0 02 3 0 0 0第三行没赋第三行没赋值,均为值,均为0第二行为空第二行为空括号,为括号,为04.3 二维数组二维数组信息信息与与物流管理系物流管理系也可以对部分元素赋值,同时省略第一维的长度也可以对部分元素赋值,同时省略第一维的长度也可以对部分元素赋值,同时省略第一维的长度也可以对部分元素赋值,同时省略第一维的长度例如:a 3=0,0,3,10=0 0 30 0 010 0
16、 0已指明是已指明是3列列注明是注明是3行行4.3 二维数组二维数组信息信息与与物流管理系物流管理系/*/*例例4-2 4-2 矩阵相加减矩阵相加减*/main()main()int i,j,c34,d34;int i,j,c34,d34;int a34=1,2,3,4,5,6,7,8,9,10,11,12;int a34=1,2,3,4,5,6,7,8,9,10,11,12;int b34=13,14,15,16,17,18,19,20,21,22,23,24;int b34=13,14,15,16,17,18,19,20,21,22,23,24;for(i=0;i3;i+)for(i=0;
17、i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)cij=aij+bij;cij=aij+bij;dij=aij-bij;dij=aij-bij;4.3 二维数组二维数组信息信息与与物流管理系物流管理系 printf(Array c isn);printf(Array c isn);for(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)printf(%5d,cij);printf(%5d,cij);printf(n);printf(n);printf(Array d isn);printf(Array d isn);f
18、or(i=0;i3;i+)for(i=0;i3;i+)for(j=0;j4;j+)for(j=0;j4;j+)printf(%5d,dij);printf(%5d,dij);printf(n);printf(n);输出数组输出数组C输出数组输出数组D4.3 二维数组二维数组信息信息与与物流管理系物流管理系/*/*例例 4-3 4-3 将二维数组中的行和列的元素互换将二维数组中的行和列的元素互换*/*/*存到另一个二维数组中去存到另一个二维数组中去*/main()main()static int a23=1,2,3,4,5,6;b32,i,j;static int a23=1,2,3,4,5,6
19、;b32,i,j;printf(array a:n);printf(array a:n);for(i=0;i=1;i+)for(i=0;i=1;i+)for(j=0;j=2;j+)for(j=0;j=2;j+)printf(%5d,aij);printf(%5d,aij);bji=aij;bji=aij;printf(n);printf(n);printf(array b:n);printf(array b:n);for(i=0;i=2;i+)for(i=0;i=2;i+)for(j=0;j=1;j+)for(j=0;j=1;j+)printf(%5d,bij);printf(%5d,bij)
20、;printf(n);printf(n);元素互换元素互换4.3 二维数组二维数组信息信息与与物流管理系物流管理系4.4.14.4.1定义和引用定义和引用定义和引用定义和引用 (随后举例)随后举例)随后举例)随后举例)字符串字符串字符串字符串 字符串常量,例如:字符串常量,例如:字符串常量,例如:字符串常量,例如:chinachina 没有字符串没有字符串没有字符串没有字符串变变量,用字符数量,用字符数量,用字符数量,用字符数组组来存放字符串来存放字符串来存放字符串来存放字符串 字符串以字符串以字符串以字符串以00为结为结束束束束标标志志志志字符数组初始化字符数组初始化字符数组初始化字符数组初
21、始化(数组中一个元素存放一个字符数组中一个元素存放一个字符数组中一个元素存放一个字符数组中一个元素存放一个字符)例:例:例:例:static char tr8=12,14,11,13,14,97,19,0;static char tr8=12,14,11,13,14,97,19,0;static char str8=p,r,o,g,r,a,m,0;static char str8=p,r,o,g,r,a,m,0;static char str8=program;static char str8=program;static char str =program;static char str =
22、program;4.4 字符数组字符数组信息信息与与物流管理系物流管理系字符个数少于定义的数组元素个数,其余元素自动为空字符个数等于定义的数组元字符个数少于定义的数组元素个数,其余元素自动为空字符个数等于定义的数组元素个数,可以省略数组长度字符个数大于定义的数组元素个数,发生越界素个数,可以省略数组长度字符个数大于定义的数组元素个数,发生越界在在C语言中,如果字符数组长度很大,但实际有效字符却很小,如何测实际长度呢语言中,如果字符数组长度很大,但实际有效字符却很小,如何测实际长度呢?在?在C语言中,以语言中,以 0来作字符结束标志来作字符结束标志 0在在ASCII码中是值等于码中是值等于0的字
23、符,的字符,特点:特点:(1)不显示;不显示;(2)作为空操作符,什么都不干;作为空操作符,什么都不干;因此不产生附加操作。因此不产生附加操作。4.4 字符数组字符数组信息信息与与物流管理系物流管理系/*/*例例4-4*4-4*输出一个字符串输出一个字符串*/main()main()int i;int i;static char c10=I,a,m,G,o,d;static char c10=I,a,m,G,o,d;for(i=0;i10;i+)for(i=0;i10;i+)printf(%c,ci);printf(%c,ci);printf(n);printf(n);4.4 字符数组字符数组
24、信息信息与与物流管理系物流管理系/*/*例例 4-5*4-5*从键盘输入两个字符串,并将其相接后输出从键盘输入两个字符串,并将其相接后输出*/main()main()char str150,str220;char str150,str220;int i,j;int i,j;printf(Enter string No.1:n);printf(Enter string No.1:n);scanf(%s,str1);scanf(%s,str1);printf(Enter string No.2:n);printf(Enter string No.2:n);scanf(%s,str2);scanf(
25、%s,str2);i=j=0;i=j=0;while(str1i!=0)while(str1i!=0)i+;i+;printf(i=%dn,i);printf(i=%dn,i);while(str1i+=str2j+)!=0);while(str1i+=str2j+)!=0);printf(string No.1-%sn,str1);printf(string No.1-%sn,str1);4.4 字符数组字符数组信息信息与与物流管理系物流管理系/*/*例例 4-6*4-6*统计键盘输入文本文件的行数,统计键盘输入文本文件的行数,*/*/*测出是否到文件尾部,有几个回车符测出是否到文件尾部,有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法语言 数据结构
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。