1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.数组[精]

第八章 数 组 组合(构造)的数据类型 9.1 数组概述 一、问题的提出 经常要处理大量地类型相同的数据。 例如:输入并存储一个班一门或若干门课程的考试成绩,并进行排序、求平均等。工程上经常处理大量的测试数据。 二、思路:数学上的下标变量。 变量名称相同,不同的下标表示不同的变量。 一个下标------一维数组,二个下标------二维数组 三、数组定义和使用的关键: 数组名称,下标 一个下标变量称为一个数组元素 9.2 一维数组 一、一维数组的定义 类型标识符 数组名[整型常量]; 其中:类型标识符---数组元素的类型 数组名---------标识符 整型常量------数组长度,数组元素的个数 数组长度必须是整型常量或符号常量,不能是变量或表达式。 例:int a[10]; 定义整型数组a,共有10个元素,分别是: a[0], a[1], a[2], … , a[9] //下标从0开始 [ ]----下标运算符,单目,优先级最高 二、一维数组的存储 编译时,根据数组类型及长度,分配连续的存储空间。 存储空间的大小: 数组长度*数据类型占用内存数量 上例中,10个整型数组元素共占用10*2 个存储单元。 数组名是数组第一个元素所占内存单元的地址—即:数组首地址。 数组中其它元素的地址: 数组名+下标,如:a[i]在内存中的地址为:a+i 三、数组元素赋初值 若不给数组元素赋初值,则其值随机数。 1. 数组初始化:在定义数组的同时,给数组元素赋初值 给全部元素赋初值 例: int a[5]={1,2,3,4,5}; 给部分元素赋值 例: int a[10]={1,2,3,4,5}; 前五个元素的值分别是1~5,其余元素的值为 0 给全部元素赋初值时,数组长度可以省略 例: int a[ ]={1,2,3,4,5}; 系统自动把数组长度定义为5 注意:数组初始化只能用数组的定义,数组定义完成之后,只能逐个元素赋值。 2. 用赋值表达式 数组定义完成之后,只能逐个元素赋值。 例:int a[10]; a[0]=1; a[1]=2; …, a[9]=30; 3. 用输入函数 只能逐个元素输入 例:float a[10]; int i; 给个别元素输入: scanf(“%f”, a[0]); i=5; scanf(“%f”, a[i]); 给所有元素输入: for(i=0; i10; i++)scanf(“%f”, a[i]); 三、数组元素的引用 一维数组相当于一列相同类型的变量,每个数组元素都相当一个变量,用法与变量完全相同。 引用数组元素的一般形式 数组名[下标] 下标表示数组元素在数组中的位置,可以用常量、变量或表达式来表示。 例:int a[10], i; a[3]=9; i=5; a[i]=10; a[i+2]=50; a[i]=a[i-1]+a[i-2]; 引用数组元素应注意的问题 数组相当于一列相同类型的变量,不能把数组作为整体使用,只能使用单个元素。 数组长度和下标用[ ]括起来,不能使用 ( ) 或 {} 。 定义数组时,数组长度只能是整型常量或符号常量。 数组元素的下标可用常量、变量或表达式表示。 数组下标不能出界,如: int a[10]; 下标范围:0~9。如果使用 a[10],则下标出界。 特别注意:C语言对数组出界不做检查。如果使用: a[-1], a[10], a[100] 在语法上是正确的,但程序运行结果肯定是错误的 例1. 求十个数的和及平均数 数组的输入和输出 main( ) { int i; float a[10], aver, sum=0; for(i=0;i10;i++) scanf(“%f”,a[i]); for(i=0;i10;i++)sum+=a[i]; aver=sum/10; printf(“%f, %f\n”, sum, aver); } 例2. 求十个数的最大(最小)值 假设法 main() { int a[10],i,max; for(i=0;i10;i++) scanf(%d,a[i]); max=a[0]; for(i=1;i10;i++) if(maxa[i])max=a[i]; printf(max=%d\n,max);

文档评论(0)

dart002 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档