6-1.一维数组及函数传参_第1页
6-1.一维数组及函数传参_第2页
6-1.一维数组及函数传参_第3页
6-1.一维数组及函数传参_第4页
6-1.一维数组及函数传参_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一维数组、数组作为函数传参计算机程序设计I主要内容一维数组6.16.26.3数组作为函数参数小结引言请思考:有30个学生,每个学生有一个成绩,求这30个学生平均成绩?如果有1000名学生呢?可以定义成简单的变量,但是烦琐,30个简单变量,那1000个怎么办?没有反映出这些数据间的内在联系,数据具有相同的属性。6.1 一维数组数组的定义:数组是一组有序数据的集合。数组的特点:数组中的每一个元素都属于同一个数据类型。用数组名和下标唯一确定数组中的元素。注意以下两点:计算机无法表示数学上的下标,所以使用s15表示s15 数组用来批量处理同类型的数据,可与循环结合使用,效率更高。6.1 一维数组数组和

2、变量一样,必须先定义后使用。10个元素:a0、a1 、a2 、a3a9。每个元素都是int类型。只能分别引用每个元素,而不能试图整体引用。定义一维数组的一般形式为: 类型符 数组名常量表达式;数组名的命名规则和变量名相同:标识符命名规则。 如 int a10;数组名数组长度:下标从0开始6.1 一维数组数组定义和数组元素引用举例:不合法定义举例:int n=10; int an;不合法原因:C语言不允许对数组大小动态定义。引用数组元素的表示形式为:数组名下标如a0=a5+a7-a2*3 合法int n=5,a10;an=20;必须是常量表达式合法6.1 一维数组初始化:在定义数组的同时,给各数

3、组元素赋值int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;相当于 int a10=0,1,2,3,4,0,0,0,0,0;int a10=0,0,0,0,0,0,0,0,0,0;相当于 int a10=0;int a5=1,2,3,4,5;可写为 int a =1,2,3,4,5;P146说明6.1 一维数组例1 对10个数组元素依次赋值为0,1,2,3,4,5, 6,7,8,9,要求按逆序输出。解题思路:定义一个长度为10的数组,数组定义为整型要赋的值是从0到9,可以用循环来赋值用循环按下标从大到小输出这10个元素6.1 一维数组#include

4、int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 使a0a9的值为090123456789a0a1a2a3a4a5a6a7a8a96.1 一维数组#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 先输出a9,最后输出a00123456789a0a1a2a3a4a5a6a7a8a96.2 数组作为函数参数数组元素相当于普通变量,可以作为实参给函数形参传值优点:需要反复传

5、值时,不用定义多个变量名字,可通过下标变换结合循环实现6.2 数组作为函数参数例2:输入10个数,结合循环判断数据是否是素数。解题思路:可以定义长度为10的一维数组a,用来存放10个数。设计一个prime函数,计算是否是素数如果是素数则返回1,否则返回0依次判断,输出素数元素6.2 数组作为函数参数数组元素作实参思考:形参值是否会改变实参值?不会,因为是独立存储单元单向传递参照上节普通变量传参int main() int a10,i; printf(enter 10 integer numbers:); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+

6、) if(prime(ai) printf(%d是素数n,ai); int prime(int n) int flag=1,i; for(i=2;in & flag=1;i+) if(n%i=0) flag=0; return(flag);6.2 数组作为函数参数数组名的真实身份:数组首元素的地址数组名可作为函数参数:实参传递的是数组首元素地址形参实质编译处理成指针变量,接收地址6.2 数组作为函数参数例3:有个一维数组score,内放10个学生成绩,求平均成绩解题思路:定义一个average函数求平均成绩用数组名作为函数实参用数组名作为函数形参在average函数内引用各数组元素6.2 数组

7、作为函数参数int main()float average(float array10); / 函数声明float score10,aver;int i;printf(input 10 scores:n);for(i=0;i10;i+)scanf(%f,&scorei);printf(n);aver=average(score); / 调用average函数printf(average score is %5.2fn,aver);return 0; 数组名作为实参6.2 数组作为函数参数float average(float array10) int i;float aver,sum=arra

8、y0;for(i=1;i10;i+)sum=sum+arrayi; /累加求和aver=sum/10;return(aver);数组名作为形参,编译系统不检查大小,可改成array6.2 数组作为函数参数分析与演示调用函数时形参数组名array 获得了实参数组score首元素地址int main aver=average(score); float average(float array10) &score0array6.2 数组作为函数参数分析与演示score0score1score2score3score4score5score9scorearrayarray0array1array2ar

9、ray3array9思考:函数中改变array数组,是否会影响实参数组score值?调用函数时形参数组名array 获得了实参数组score首元素地址6.2 数组作为函数参数分析与演示score1score2score3score4score5score9scorearrayarray0score0=100score0=70*修改的是同一片内存int main aver=average(score); printf(“%d”,score0); float average(float array) array0=70; *数组作为形参,形参可以修改实参值输出706.2 数组作为函数参数例4:输入10个数,要求输出值最大元素。解题思路:可以定义长度为10的一维数组a,用来存放10个数。设计一个max函数,形参也是一个数组函数用“打擂台算法”依次比较各个数组元素,求得最大者将最大值返回6.2 数组作为函数参数int max(int b10); int main() int a10,i;for(i=0;i10;i+) scanf(%d,&ai); printf(The largest number is %d,max(a);int max(int b10) int i,m=b0; for(i=0;im) m=bi; return

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论