书签 分享 收藏 举报 版权申诉 / 56
上传文档赚钱

类型C语言开发基础教程第4章-数组-教学PPT课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3377017
  • 上传时间:2022-08-25
  • 格式:PPTX
  • 页数:56
  • 大小:2.45MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C语言开发基础教程第4章-数组-教学PPT课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语言 开发 基础教程 数组 教学 PPT 课件
    资源描述:

    1、第第4章章 数组数组 一维数组 二维数组4.1 数组数组是一组具有相同数据类型的变量集合。数组中的每一项称为数组的元素,每个元素都有对应的下标(n),用于表示元素在数组中的位置序号,下标从0开始。4.1 数组100206733988296680 0 1 2 3 4 5 6 7 8 9 上面数组中包含10个元素,这些元素按照下标的顺序进行排列。由于数组元素的下标从0开始,数组中的第n个元素为arrn-1。10个int类型的数据的集合,可以定义一个数组arr进行存储。4.1 数组根据数据的复杂度,数组下标的个数是不确定的。数组元素下标的个数也称为维数,根据维数的不同,可将数组分为一维数组、二维数组

    2、、三维数组、四维数组等。通常情况下,我们将三维及以上的数组称为多维数组。注 意4.1 数组数组在内存中存储时,占用的是一段连续的内存。4.2.1 一维数组的定义与初始化4.2.1 一维数组的定义与初始化一维数组的定义方式如下:类型说明符 数组名常量表达式;类型说明符表示数组中所有元素的类型,常量表达式指的是数组的长度,也就是数组中存放元素的个数。例如:定义一个可存储5个int类型元素的数组,int array5;/数组array,存储int类型数据,大小为54.2.1 一维数组的定义与初始化数组初始化的常见的方式有3种:1、直接对数组中的所有元素赋值。int i5=1,2,3,4,5;2、只对

    3、数组中的一部分元素赋值。int i5=1,2,3;3、对数组全部元素赋值,但不指定长度。int i=1,2,3,4;数组初始化4.2.1 一维数组的定义与初始化(1)数组的下标是用方括号括起来的,而不是圆括号;(2)数组同变量的命名规则相同;(3)数组定义中,常量表达式的值可以是符号常量。注 意4.2.2 一维数组的访问1、读取指定元素一维数组的元素访问方式如下:数组名下标;下标指的是数组元素的位置,数组元素的下标是从0开始的。4.2.2 一维数组的访问2、遍历一维数组遍历数组使用循环语句实现,以数组的下标作为循环条件,只要数组下标有效就可以获取数组元素。for(i=0;i 10;i+)pri

    4、ntf(x%d:%dn,i,xi);int i=0;while(i 10)printf(x%d:%dn,i,xi);i+;小提示:数组越界数组的下标都有一个范围,即“0数组长度-1”,假设数组的长度为6,其下标范围为05。当访问数组中的元素时,下标不能超出这个范围,否则程序会报错。4.2.3 数组元素排序1、冒泡排序在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。4.2.3 数组元素排序第1步:从第1个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前1个元素比后1个元素大,则交换它们的位置。整个过程完成后

    5、,数组中最后1个元素自然就是最大值,这样也就完成了第1轮的比较。4.2.3 数组元素排序第2步:除了最后1个元素,将剩余的元素继续进行两两比较,过程与第1步相似,这样就可以将数组中第二大的数放在倒数第2个位置。第3步:依次类推,对剩余元素重复以上步骤,直到没有任何一对元素需要比较为止。4.2.3 数组元素排序冒泡排序流程图:4.2.3 数组元素排序使用冒泡排序对数组9,8,3,5,2排序。4.2.3 数组元素排序for(i=0;i 5-1;i+)/外层循环控制比较的轮数 for(j=0;j arrj+1)/如果前面的元素大于后面的元素temp=arrj;/就交换两个元素的位置arrj=arrj

    6、+1;arrj+1=temp;4.2.3 数组元素排序2、选择排序选择排序的原理与冒泡排序不同,它是指通过每一趟排序过程中从待排序记录中选择出最大(小)的元素,将其依次放在数组的最前或最后端,来实现数组的排序。接下来,分步骤讲解冒泡排序的整个过程。4.2.3 数组元素排序第1步:在数组中选择出最小的元素,将它与0下标元素交换,即放在开头第1位。第2步:除0下标元素外,在剩下的待排序元素中选择出最小的元素,将它与1下标元素交换,即放在第2位。第3步:以此类推,直到完成最后两个元素的排序交换,就完成了升序排列。4.2.3 数组元素排序选择排序流程图:4.2.3 数组元素排序使用选择排序对数组9,8

    7、,3,5,2进行排序。4.2.3 数组元素排序第1轮:循环找出最小值2,将它与第一个元素9进行交换。第2轮:循环找出剩下的4个元素中最小值3,将它与第二个元素8交换。第3轮:循环找出剩下的3个元素中最小值5,将它与第三个元素8交换。第4轮:对最后两个元素进行比较,比较后发现不需要交换,则排序完成。4.2.3 数组元素排序for(i=0;i 5-1;i+)/外层循环控制比较的轮数 min=i;/暂定i下标处的元素是最小的,用min记录其下标for(j=i+1;j 5;j+)/内层循环在剩下的元素中找出最小的元素if(xj xmin)min=j;if(min!=i)/交换两个元素的位置temp=x

    8、i;xi=xmin;xmin=temp;4.3 阶段安全双色球一、案例描述彩票是以抽签给奖方式进行筹款或敛财所发行的凭证,双色球是中国福利彩票目前最火的一种玩法。每天都有上亿的彩民关注着双色球的开奖结果。4.3 阶段安全双色球一、案例描述双色球投注区分为红色球号码区和蓝色球号码区,每注投注号码由6个红色球和1个蓝色球号码组成。红色球号码从133中选择,蓝色球号码从116中选择。每期开出的红色球号码不能重复,但是蓝色球可以是红色球中的一个。4.3 阶段安全双色球一、案例描述案例要求编写程序模拟双色球的开奖过程,由程序随机产生6个红色球号码和1个蓝色球号码并把结果输出到屏幕上。4.3 阶段安全双色

    9、球二、案例分析由案例描述可知,本案例在实现时需要用到随机数知识。但是需要注意“每期开出的红色球号码不能重复”,而使用随机函数可能会产生重复的号码,因此在编程时需要判断新生成的红色球号码是否与已经生成了。如果号码与已生成的红色球号码重复了,则需要重新生成新的红色球号码。4.3 阶段安全双色球二、案例分析可以使用for循环来实现随机生成6个不同红色球号码的功能,用数组保存生成的6个红色球号码,而且需要在for循环中每次都要判断是否出现了重复的号码。蓝色球号码只有一个,且允许与红色球号码重复,因此可以直接用随机函数生成。4.3 阶段安全双色球三、案例实现思路(1)先使用系统定时器的值作为随机数种子,

    10、为随机数的生成做好准备;(2)之后分别随机生成6个红色球号码和1个蓝色球号码;4.3 阶段安全双色球三、案例实现思路(3)用外层for循环生成6个红色球号码,注意在生成新红色球号码的时候用内层for循环遍历数组中所有红色球号码,确保没有与之相同的号码,若有,则重新生成;(4)最后把红色球号码和蓝色球号码分别打印到屏幕上。多学一招:多学一招:随机数随机数在C语言中可以调用rand()函数产生一个随机数。int rand(void);rand()函数返回值范围是0RAND_MAX,RAND_MAX定义在stdlib.h中,其值为2147483647,即rand()函数产生的随机数范围为021474

    11、83647。多学一招:多学一招:随机数随机数如果要生成某个范围内的随机数,一般可分为两种情况:(1)生成从0到某个值的随机数,例如生成0100范围内的随机数,则可利用rand()函数对100取余。int num1=rand()%100;int num2=rand()%100;多学一招:多学一招:随机数随机数(2)产生不从0开始的随机数,例如产生10100之间的随机数,则利用rand()函数对90(100-10)进行取余,然后再加上10即可得到10100之间的随机数。int a=rand()%90+10;int b=rand()%90+10;多学一招:多学一招:随机数随机数rand()函数产生的

    12、随机数并不是真正意义上的随机数,而是一个伪随机数,如果要产生真正的随机数,必须以某一个数(种子)为基准,按照某个递推公式推算出一系列数。这就需要为rand()函数提供一个种子。注注 意意多学一招:多学一招:随机数随机数C语言专门提供了一个函数srand(),为随机数生成器播散种子void srand(unsigned int seed);参数seed为种子,用来初始化rand()的起始值。其功能为:从srand(seed)中所指定的seed开始,返回一个在0,RAND_MAX之间的随机整数。调用srand()函数时,一般使用系统时间作为随机数种子。srand(unsigned int)time

    13、(NULL);4.4.1 二维数组定义与初始化二维数组是指维数为2的数组,即数组有两个下标,二维数组是对一维数组的扩展,它可以看作是一维数组的每一个元素是一维数组。4.4.1 二维数组定义与初始化二维数组的定义方式与一维数组类似:类型说明符 数组名常量表达式1常量表达式2;“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。例如,定义一个3行4列的二维数组:int a34;/数组a是个3行4列的二维数组4.4.1 二维数组定义与初始化二维数组a的元素分布如下图:4.4.1 二维数组定义与初始化二维数组的初始化:(1)按行给二维数组赋初值。int a23=1,2,3,4,5,6;(2)将

    14、所有的数组元素按行顺序写在1个大括号内。int a23=1,2,3,4,5,6;4.4.1 二维数组定义与初始化二维数组的初始化:(3)对部分数组元素赋初值。int b34=1,4,3,2,1,2;如果二维数组只进行了部分赋值,未赋值的元素系统会自动补0。4.4.1 二维数组定义与初始化二维数组的初始化:(4)如果对全部数组元素置初值,则二维数组的行下标可省略,但列下标不能省略。int a3=1,2,3,4,5,6;/等同于int a23=1,2,3,4,5,6;系统会根据固定的列数,将后边的数值进行划分,自动将行数定为2。4.4.2 二维数组的访问1、读取指定元素二维数组的引用方式同一维数组

    15、的引用方式一样,也是通过数组名和下标的方式来引用数组元素。数组名行列;4.4.2 二维数组的访问2、遍历二维数组二维数组的遍历也通过循环语句实现,由于二维数组有两个维数,遍历二维数组需要使用双层循环。4.4.2 二维数组的访问for(int i=0;i 3;i+)/循环遍历行for(int j=0;j 4;j+)/循环遍历列 printf(%d%d:%d,i,j,a ij);printf(n);/每一行的末尾添加换行符4.4.2 二维数组的访问int i=0,j=0;while(i 3)/循环遍历行while(j4)/循环遍历列printf(%d%d:%d,i,j,a ij);j+;/在行固定

    16、的情况下,列值依次增加j=0;/将j归0,以便进行下一轮循环 printf(n);i+;/遍历完一行后,行值加14.5 阶段安全杨辉三角一、案例描述杨辉三角,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。案例要求通过编程在屏幕上打印出杨辉三角的前10行。4.5 阶段安全杨辉三角11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 14.5 阶段安全杨辉三角二、案例分析对杨辉三角的图形规律

    17、进行总结,结论如下:(1)第n行的数字有n项;(2)每行的端点数为1,最后一个数也为1;(3)每个数等于它左上方和上方的两数之和;(4)每行数字左右对称,由1开始逐渐增大。4.5 阶段安全杨辉三角二、案例分析根据上面总结的规律,可以将杨辉三角看作一个二维数组arrnn,并使用双层循环控制程序流程,为数组arrnn中的元素逐一赋值,假设数组元素记为arrij,则元素arrij满足:arrij=arri-1j-1+arri-1j。4.5 阶段安全杨辉三角4.5 阶段安全杨辉三角三、案例实现思路(1)先定义一个二维数组;(2)定义双重for循环,外层循环负责控制行数,内层循环负责控制列数;(3)根据规律给数组元素赋值;(4)最后用双重for循环将二维数组中的元素打印出来,即把杨辉三角输出到屏幕上。4.6 多维数组多维数组的定义与二维数组类似:类型说明符 数组名 n1n2nn;例如,定义一个三维数组,arr222=1,2,3,4,5,6,7,8;4.6 多维数组三维数组arr在内存中的存储如下图:4.7 本章小结本章首先讲解什么是数组,其次讲解了一维数组的定义、初始化、引用以及数组的常见操作,最后讲解了二维数组的相关知识,最后简单介绍了多维数组的定义方式,掌握好本章的内容有助于后面课程的学习。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C语言开发基础教程第4章-数组-教学PPT课件.pptx
    链接地址:https://www.163wenku.com/p-3377017.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库