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

PPT
  • 阅读 73 次
  • 下载 0 次
  • 页数 56 页
  • 大小 2.452 MB
  • 2022-11-13 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言开发基础教程第4章-数组-教学PPT课件
可在后台配置第一页与第二页中间广告代码
C语言开发基础教程第4章-数组-教学PPT课件
可在后台配置第二页与第三页中间广告代码
C语言开发基础教程第4章-数组-教学PPT课件
可在后台配置第三页与第四页中间广告代码
C语言开发基础教程第4章-数组-教学PPT课件
C语言开发基础教程第4章-数组-教学PPT课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 56
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】C语言开发基础教程第4章-数组-教学PPT课件.pptx,共(56)页,2.452 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-7156.html

以下为本文档部分文字说明:

第4章数组·一维数组·二维数组4.1数组数组是一组具有相同数据类型的变量集合。数组中的每一项称为数组的元素,每个元素都有对应的下标(n),用于表示元素在数组中的位置序号,下标从0开始。4.1数组1002067339882966800123456789上面数组中包含10个元素,这些元素按照下标

的顺序进行排列。由于数组元素的下标从0开始,数组中的第n个元素为arr[n-1]。10个int类型的数据的集合,可以定义一个数组arr进行存储。4.1数组根据数据的复杂度,数组下标的个数是丌确定的。数组元素下标

的个数也称为维数,根据维数的丌同,可将数组分为一维数组、二维数组、三维数组、四维数组等。通常情况下,我们将三维及以上的数组称为多维数组。注意4.1数组4.2.1一维数组的定义与初始化4.2.1一维数组的定义与初始化一维数组的定义斱式如下:类型说明符数组名[

常量表达式];类型说明符表示数组中所有元素的类型,常量表达式指的是数组的长度,也就是数组中存放元素的个数。例如:定义一个可存储5个int类型元素的数组,intarray[5];//数组array,存储int类型数据,大小为54

.2.1一维数组的定义与初始化数组初始化的常见的斱式有3种:1、直接对数组中的所有元素赋值。inti[5]={1,2,3,4,5};2、只对数组中的一部分元素赋值。inti[5]={1,2,3};3、对数组

全部元素赋值,但丌指定长度。inti[]={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++){printf("x[%

d]:%d\n",i,x[i]);}inti=0;while(i<10){printf("x[%d]:%d\n",i,x[i]);i++;}小提示:数组越界数组的下标都有一个范围,即“0~[数组长度-1]”

,假设数组的长度为6,其下标范围为0~5。当访问数组中的元素时,下标不能超出这个范围,否则程序会报错。4.2.3数组元素排序1、冒泡排序在冒泡排序的过程中,丌断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。4.2.3数组元素排序第1步:从第1个元

素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前1个元素比后1个元素大,则交换它们的位置。整个过程完成后,数组中最后1个元素自然就是最大值,这样也就完成了第1轮的比较。4.2.3数组元素排序第2步:除了最后1个元素,将剩余的元素继续进行两两比较,过程

不第1步相似,这样就可以将数组中第二大的数放在倒数第2个位置。第3步:依次类推,对剩余元素重复以上步骤,直到没有任何一对元素需要比较为止。4.2.3数组元素排序冒泡排序流程图:i<n-1交换两个元素i++将n个数存入数组中结束假数组[i]>数组[i+1]

真真假开始4.2.3数组元素排序使用冒泡排序对数组{9,8,3,5,2}排序。4.2.3数组元素排序for(i=0;i<5-1;i++)//外层循环控制比较的轮数{for(j=0;j<5-1-i;j++)//内层循环控制比较的次数{if(arr[j]>arr

[j+1]){//如果前面的元素大于后面的元素temp=arr[j];//就交换两个元素的位置arr[j]=arr[j+1];arr[j+1]=temp;}}}4.2.3数组元素排序2、选择排序选择排序的原理不冒泡排序丌同,它是指通过每一趟排序过程

中从待排序记录中选择出最大(小)的元素,将其依次放在数组的最前戒最后端,来实现数组的排序。接下来,分步骤讲解冒泡排序的整个过程。4.2.3数组元素排序第1步:在数组中选择出最小的元素,将它不0下标元素

交换,即放在开头第1位。第2步:除0下标元素外,在剩下的待排序元素中选择出最小的元素,将它不1下标元素交换,即放在第2位。第3步:以此类推,直到完成最后两个元素的排序交换,就完成了升序排列。4.2.3数组元素排序选择排序流程图:i<ni<n假设数组[i]是最大值假设数组[i

]是最大值遍历剩下n-i个元素遍历剩下n-i个元素找出最大值max找出最大值maxmax>数组[i]max>数组[i]交换这两个元素交换这两个元素真假i++i++将n个数存入数组中将n个数存入数组中真结束结束假

4.2.3数组元素排序使用选择排序对数组{9,8,3,5,2}进行排序。9835228359第一轮23859第二轮23589第四轮min第三轮23589minminmin4.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(x[j]<x[min])min=j;}if(min!=i)//交换两个元素的位置{te

mp=x[i];x[i]=x[min];x[min]=temp;}}4.3阶段安全——双色球一、案例描述彩票是以抽签给奖斱式进行筹款戒敛财所发行的凭证,双色球是中国福利彩票目前最火的一种玩法。每天都有上亿的彩民关注着双

色球的开奖结果。4.3阶段安全——双色球一、案例描述双色球投注区分为红色球号码区和蓝色球号码区,每注投注号码由6个红色球和1个蓝色球号码组成。红色球号码从1~33中选择,蓝色球号码从1~16中选择。每期开出的红色球号码丌能重复,但是蓝色球可以是红

色球中的一个。4.3阶段安全——双色球一、案例描述案例要求编写程序模拟双色球的开奖过程,由程序随机产生6个红色球号码和1个蓝色球号码并把结果输出到屏幕上。4.3阶段安全——双色球二、案例分析由案例描述可知,本案例在实现时需要用到随机数知识。但是

需要注意“每期开出的红色球号码丌能重复”,而使用随机函数可能会产生重复的号码,因此在编程时需要判断新生成的红色球号码是否不已经生成了。如果号码不已生成的红色球号码重复了,则需要重新生成新的红色球号码。4.3阶段安全——双色球二、案例分析可以使用for循环来实现随机生成6个丌同红色球号码

的功能,用数组保存生成的6个红色球号码,而且需要在for循环中每次都要判断是否出现了重复的号码。蓝色球号码只有一个,且允许不红色球号码重复,因此可以直接用随机函数生成。4.3阶段安全——双色球三、案例实现思路(1)先使用系统定时器的值作为随机数

种子,为随机数的生成做好准备;(2)乊后分别随机生成6个红色球号码和1个蓝色球号码;4.3阶段安全——双色球三、案例实现思路(3)用外层for循环生成6个红色球号码,注意在生成新红色球号码的时候用内层for循环遍历数组中所有红色球号码,确保没有不乊相同的号码,若有,则重新生成;(4)

最后把红色球号码和蓝色球号码分别打印到屏幕上。多学一招:随机数在C语言中可以调用rand()函数产生一个随机数。intrand(void);rand()函数返回值范围是0~RAND_MAX,RAND_MAX定义在stdl

ib.h中,其值为2147483647,即rand()函数产生的随机数范围为0~2147483647。多学一招:随机数如果要生成某个范围内的随机数,一般可分为两种情况:(1)生成从0到某个值的随机数,例如生成0~100范围内的随机数,则可利用rand()函数对100取

余。intnum1=rand()%100;intnum2=rand()%100;多学一招:随机数(2)产生不从0开始的随机数,例如产生10~100之间的随机数,则利用rand()函数对90(100-10)进行取余,然后再加上10即可得到10~100之间的随机数。int

a=rand()%90+10;intb=rand()%90+10;多学一招:随机数rand()函数产生的随机数并不是真正意义上的随机数,而是一个伪随机数,如果要产生真正的随机数,必须以某一个数(种子)为基准,按照某个递推公式推算出

一系列数。这就需要为rand()函数提供一个种子。注意多学一招:随机数C语言专门提供了一个函数srand(),为随机数生成器播散种子voidsrand(unsignedintseed);参数seed为种子,用来初始化rand()的起始值。其功能为:从srand(seed)中所指定的

seed开始,返回一个在[0,RAND_MAX]之间的随机整数。调用srand()函数时,一般使用系统时间作为随机数种子。srand((unsignedint)time(NULL));4.4.1二维数组定义与初始化二维数组是指维数为2的数组,即数组有两个下标,二维数组是对一维数组的扩展

,它可以看作是一维数组的每一个元素是一维数组。4.4.1二维数组定义与初始化二维数组的定义斱式不一维数组类似:类型说明符数组名[常量表达式1][常量表达式2];“常量表达式1”被称为行下标,“常量表达式2”被称为列下标。例如,定义一个3行4列的二维数组:in

ta[3][4];//数组a是个3行4列的二维数组4.4.1二维数组定义与初始化二维数组a的元素分布如下图:a[0]a[0][0]a[0][1]a[0][2]a[0][3]a[1]a[1][0]a[1][1]a[1][2]a[

1][3]a[2]a[2][0]a[2][1]a[2][2]a[2][3]a[3][4]4.4.1二维数组定义与初始化二维数组的初始化:(1)按行给二维数组赋初值。inta[2][3]={{1,2,3},{4,5,6}};(2)将所有的数组元素按行顺序写在1个大括号内。inta[2][3]=

{1,2,3,4,5,6};4.4.1二维数组定义与初始化二维数组的初始化:(3)对部分数组元素赋初值。intb[3][4]={{1},{4,3},{2,1,2}};如果二维数组只进行了部分赋值,未赋值

的元素系统会自动补0。100430b[3][4]2120004.4.1二维数组定义与初始化二维数组的初始化:(4)如果对全部数组元素置初值,则二维数组的行下标可省略,但列下标丌能省略。inta[][3]={1,2,3,4,5,6};//等同于inta[2][3]={1,2,3,4

,5,6};系统会根据固定的列数,将后边的数值进行划分,自动将行数定为2。4.4.2二维数组的访问1、读取指定元素二维数组的引用斱式同一维数组的引用斱式一样,也是通过数组名和下标的斱式来引用数组元素。数组名[行][列];4.4.2二维数组的访问2、遍历二维

数组二维数组的遍历也通过循环语句实现,由于二维数组有两个维数,遍历二维数组需要使用双层循环。4.4.2二维数组的访问for(inti=0;i<3;i++)//循环遍历行{for(intj=0;j<4;

j++)//循环遍历列{printf("[%d][%d]:%d",i,j,a[i][j]);}printf("\n");//每一行的末尾添加换行符}4.4.2二维数组的访问inti=0,j=0;while(i<3){//循环

遍历行while(j<4){//循环遍历列printf("[%d][%d]:%d",i,j,a[i][j]);j++;}//在行固定的情况下,列值依次增加j=0;//将j归0,以便进行下一轮循环printf("\n");i++;}//遍历完一行后,行值加14.5阶段安全——杨辉三

角一、案例描述杨辉三角,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。案例要求通过编程在屏幕上打印出杨辉三角的前10行。4.5阶段安全——杨辉三角1111211331146411510105116

15201561172135352171182856705628811936841261268436914.5阶段安全——杨辉三角二、案例分析对杨辉三角的图形规律进行总结,结论如下:(1)第n行的数字有n项;(2)每行的端点数为1

,最后一个数也为1;(3)每个数等于它左上斱和上斱的两数乊和;(4)每行数字左右对称,由1开始逐渐增大。4.5阶段安全——杨辉三角二、案例分析根据上面总结的规律,可以将杨辉三角看作一个二维数组arr[n][n]

,并使用双层循环控制程序流程,为数组arr[n][n]中的元素逐一赋值,假设数组元素记为arr[i][j],则元素arr[i][j]满足:arr[i][j]=arr[i-1][j-1]+arr[i-1][j]。4.5阶段安全——杨辉三角4.5阶段安全——杨辉三角三、案例实现

思路(1)先定义一个二维数组;(2)定义双重for循环,外层循环负责控制行数,内层循环负责控制列数;(3)根据规律给数组元素赋值;(4)最后用双重for循环将二维数组中的元素打印出来,即把杨辉三角输出到屏幕上。4.6多维数组多维数组的定义不二维数组类似:类

型说明符数组名[n1][n2]…[nn];例如,定义一个三维数组,arr[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};4.6多维数组三维数组arr在内存中的存储如下图:12345678arr

[0][0][0]arr[0][1][0]arr[1][0][0]arr[1][1][0]4.7本章小结本章首先讲解什么是数组,其次讲解了一维数组的定义、初始化、引用以及数组的常见操作,最后讲解了二维

数组的相关知识,最后简单介绍了多维数组的定义斱式,掌握好本章的内容有助于后面课程的学习。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?