- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算概论 第10章 数组、结构 本章内容 数组的概念与用法 结构的概念与用法 1. 数组的定义和使用 什么是数组 如何定义数组 如何给数组赋值 如何遍历与访问数组中的内容 数组的用途 多维数组 1.1 什么是数组 数组是一组类型相同的变量的集合。 数组中的每个元素的数据类型是相同的。 数组的元素顺序地存储在连续的内存空间中。 当要处理很多类型相同的数据时,可利用数组以避免在程序中定义大量的变量。 1.2 数组的定义 数组定义方法如下: 数据类型 数组名[数组元素个数] = {数组元素初值}; 一些定义数组的例子: int score[5]; char cards[4] = {‘a’, ‘0’, ‘r’, ‘W’ }; float point[2] = {2.56, 23.43}; double distances[4] ; 数组在内存中的布局 数组在内存中的布局 1.3 数组元素的赋值与访问 数组元素可以在定义时给定初始值,也可以在程序中给数组元素赋值。 在给数组元素赋值时,可以把数组元素看作单个变量,例如: score[0] = 67; score[3] = 89; distance[2] = 356.24; cards[0] = b; 访问数组元素时不要越界! int number[10]; number[10]=56; ——下标越界 对于数组number,合法的访问范围是: number[0], number[1], ……, number[9] 当引用number[10]时,对于C语言来说,这是合法的,但是它所引用的却是number数组之外的其他内存区域,其内的值是未知的;如果对其进行修改的话,还可能影响整个程序的正确性。 1.4 数组的遍历 可以用一个循环语句给数组的所有元素赋值,或顺序访问它的每个元素。 例如: int i; int student[100]; int odd=0, even=0; for (i=0; i100;i++) { scanf(“%d”, student[i] ); } for (i=0; i100;i++) { if ((student[i] % 2) == 0) { even++; } else { odd++; } } 1.5 数组的应用 当程序要处理一组类型相同、含义类似的数据时应该使用数组 例10.2 给定一个正整数n(n2),求出所有小于n的质数。 例 10.4 奖金 过年了,村里要庆祝一下。村长对村里的128个村民说:做一个游戏,让每个人把出生年+月+日得到一个数。例如:1990年10月15日=1990+10+15=2015。然后把这个数报上来。村里有一笔钱要作为游戏的奖金,数额为M元。如果有人报上来的数字与M相同,就把这笔钱发给这些人。如果只有一个人得奖,奖金都归这个人。如果有多于一个人得奖,则他们平分这笔钱。现在让我们来写一段程序算算都有哪些人得到了奖金?得到多少? 例 10.4的问题求解 定义一个数组存放所有村民上报的数据 定义一个数组存放获奖者的编号(幸运者数组) 定义一个整数存放获奖者人数 村民顺序报上数字,其相应的编号就是存放其数据的数组元素下标:0,1,2,… 报上数字与幸运数相等,则 记录编号到幸运者数组中 获奖者人数加1 最后,打印出获奖者编号和获得的奖金数额 1.7 数组使用中的注意事项 1)数组必须初始化(或赋值)后方可使用 可用type ary[N] = {0}形式给ary赋初值0 例:int age[100] = {0}; 2)数组元素下标范围从0到N-1,避免访问越界 3)整个数组占用字节数可用“sizeof(数组名)” 获得 例:int age[100]; int len; len = sizeof(age); 定义数组时尽量用宏常量指明数组长度 例:#define NUM 30 int age[NUM]; 数组长度与数组占用字节数是两个不同的概念 数组长度是数组中包含的元素的个数 数组占用字节数是数组在内存中占用的存储单元数。 1.8 多维数组 具有两个下标的数组称为二维数组。有些数据要依赖于两个因素才能惟一地确定,例如有3个学生,每个学生有4门课的成绩,显然,成绩数据是一个二维表。 二维数组的例子: int matrix[10][10]={0}; int n23[2][3] = { {1,2,3}, {2,4,6} }; #define STUDENT_NUM 100 #define COURSE_NUM 8 double scores[STUDENT_
您可能关注的文档
- 第5章 商业计划第5章 商计划业计划.ppt
- 第5章 时序逻辑电路第5章时序逻辑电路第5章 时序逻辑电路第5章 时序逻辑电路.ppt
- 第5章 同步时序逻辑电路第章 同步时序逻辑电路第5章 同步时序逻辑电路第5章 同步时序逻辑电路.ppt
- 第5章 图像复原第5章 图复原像复原.ppt
- 第5章 网络消费者行为第5 网络消费者行为第5章 网络消费者行为第5章 网络消费者行为.ppt
- 第5章 信源编码标准ne第5章 信源编码标准new第5章 信源编码标准new第5章 信源编码标准new.ppt
- 第5章 数字电路基础第5章数字电路基础第5章 数字电路基础第5章 数字电路基础.ppt
- 第5章 时域测量第5章 时测量域测量.ppt
- 第5章 隧道围岩分级与围岩力第5章 隧道围岩分级与围岩压力第5章 隧道围岩分级与围岩压力第5章 隧道围岩分级与围岩压力.ppt
- 第5章 组建优秀的创业团队5章 组建优秀的创业团队第5章 组建优秀的创业团队第5章 组建优秀的创业团队.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)