当前课程知识点:C语言程序设计 > 第22讲 编程训练 > 编程训练 > 数组参数传递(上)
这一讲通过事例讲解涉及数组函数的调用
大家可以对比一下数组在定义 参数传递
及调用时的不同形式以及有多个返回值时如何处理
例1计算平均分
要求有5个学生的成绩
编程计算并输出平均分
计算平均分用函数实现
我们看一下这个程序
首先这是求平均分的函数
然后这儿定义sum是下面做累加用的
然后这个循环过程当中就把数组中的各项累加到sum当中
然后返回时就把累加的总分数
再除以学生的人数就是除以5
返回平均成绩
然后我们看在main函数当中
我们直接通过赋初值的方法把成绩给到这儿了
然后这儿是调用求平均分的函数
这儿需要注意的是
在调用的时候
我们看这个地方这儿直接写数组的名字
既不要后面带括号
也不要带别的
就仅仅是数组名
还要注意的是这是调用函数的时候
这儿参数是这样的
然后我们看这个函数本身
就是它的形参这个地方我们数组名写的是s
但是实际上
这个地方这个score
然后这儿虽然变量名数组的名字不一样了
但实际上通过这样传递
那么传过来的还是同样的一个数组
就是说s这个数组和score这个数组是一模一样的
这个地方注意一下它的这个形式
有5个学生的成绩
编程计算并输出平均分和最高分
计算平均分和最高分用一个函数实现
这个例子给大家展示了当函数需要带出多个值时如何处理
函数需要带出两个值
这种情况下可以通过数组带回结果
也可以通过全局变量来实现
我们看一下方法1就是通过数组带回多个结果
这是用函数来计算平均分
及最高分的这样一个概述性的描述
就是先计算出来平均分
然后把平均分赋值给这个result[0]
就是这个数组的第一个元素
然后计算出来最高分
把最高分赋值给第二个元素
这个地方s就是指成绩的那个数组
然后为了返回多个值
我们在这个地方又多带了一个数组
那么这种情况下你需要返回几个值
那么就可以让这个数组设成多大
比如说我们这个地方是要返回两个值
那么这儿在主程序当中设定传过来的数组时
只需要有两个元素
如果你要想返回的值更多
需要返回几个值
那么这个数组就设多大
我们看一下
在主程序当中
这个res[2]这个就刚才讲的
它是要返回平均分及最高分的
就返回两个值
所以这个元素就设成有两个元素的数组
然后这是成绩
我们在这个地方直接调用这个函数
调用的时候我们看它的参数形式score
就是这个数组
然后res就是这个数组
我们在刚才的那个例子当中也解释了
那么这个地方调用的时候直接写数组名
就是这儿s和这儿score
虽然名字不同但其实它们是同一个数组
这个res和这个result虽然名字不同
它们也是同一个数组
那么也就是说在这儿调用了以后
这个地方返回给result[0]的结果
实际上等同于是给写到这个res[0]里面
写到result[1]里面的结果实际上等同于写到res[1]里面
所以这个地方当输出的时候
这儿输出的就是平均分
这儿输出的就是最高分
我们看一下完整的程序
那么这块呢就是计算平均分
然后我们把计算出来的平均分赋值给result[0]
然后下面这个过程是计算最高分的过程
然后把计算出来的最高分赋值给result[1]
那么计算最高分的这个过程
我们在以前的课程里面讲过
我们运行一下这个程序
这个是运行的结果
就是平均分是78点多
然后最高分是95
当然这个地方输出比较粗糙
就是输出成绩可能看起来不太完美
要想完美一点你可以在这个地方输出的时候
比如小数点后面就只留一位
当然那是细节
与我们整个程序的主旨没有关系
我们看一下通过全局变量来实现计算平均分
及最高分的方法
这儿定义了两个全局变量
aver表示平均分
max表示最高分
然后在这个函数当中那我们就只需要一个参数
就是成绩数组
在这个里面计算出来平均分
然后把平均分赋值给aver
计算出来的最高分
把最高分赋值给max
在主程序当中
这样就通过赋初值的方法给成绩数组给值
然后这儿就调用这个函数
这个函数调用了以后
因为在这个地方它执行完了以后把平均分
与最高分都是赋值给了全局变量的
所以就说它影响了全局变量的值
那么我们在输出的时候就直接输出这个aver和max
这样就得到了这个结果
当然像这样需要函数影响多个值
并且需要带回到主程序当中之后
那么使用方法1和方法2各有优劣
这个大家可以根据具体情况来进行选择
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-循环类型
-作业
-程序结构
-函数基础
-作业
-数组基础
-作业
-作业
-作业
-作业
-程序调试
- 文件(上)
- 编程训练