引用、类与对象编程练习

一、题目

编写一个同时可求最大最小值、平均值的函数,给一组数据(float型数组),求出这组数据的最大最小、平均值。要求使用引用作为形参。(提示,这个函数需要返回多个数据,引用相当于多个返回值,考察引用和数组作为形参)

二、解题

(1)解题思路:定义两个函数,分别是输入函数和求数据函数,返回值为无,但求数据函数使用引用可以直接操作实参,相当于间接返回多个返回值,求数据函数中分别求平均数和最值,最值可以在一个循环内判断,最后主调函数输出结果。

(2)运行结果:

 (3)代码:

//同时可求最大值、最小值、平均数的函数,引用做形参,多个返回值(引用),给一组float数组数据

#include<iostream>

using namespace std;

void q_max_min_aver(float a[], float &q_max, float &q_min, float &q_aver,int n)//使用引用返回多个返回值

{

int i = 0;

int m = n;//后面还要使用 n,所以暂时不能改变 n

while (m--)//先把数组所有数据加到q_aver

{

q_aver += a[i];

++i;

}

q_aver /= n;

for (i = 1; i < n; ++i)//传值过来时数组第一个元素就已经被认为是最大值和最小值

{

if (q_max < a[i])  q_max = a[i];//先判断最大值

else

{

if (q_min > a[i])  q_min = a[i];//再判断最小值,若当前 a[i] 即不大于最大值也不小于最小值,则不操作,查看下一元素

}

}

return;

}

void input_float(float (&a)[20],int n)//数组的引用做形参,直接操作实参,无括号就变为引用的数组

{

cout << "请输入float型数据:";

for (int i = 0; i < n; ++i)  cin >> a[i];

return;

}

int main()

{

float a[20] = { 0 };

int n;//输入的数据个数

cout << "要输入的数据个数:";

cin >> n;

input_float(a, n);//输入数组

float MAX = a[0], MIN = a[0],aver = 0;//默认首元素为最大且最小

q_max_min_aver(a, MAX, MIN, aver, n);

cout << "最大值、最小值、平均数依次为:" << MAX << ' ' << MIN << " " << aver;

return 0;

}

(4)分析总结:

①尝试使用while(0 != (cin >> a[i]))输入数组失败最后妥协使用传统循环方法

②计算平均值时不可以除以sizeof(a)/sizeof(float),这里算出来的是定义时的数组长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值