本题要求输出低于平均分的学生序号(从0开始)和成绩,每个学生信息占一行。
用一维数组保存一组学生的成绩(最多30人),下标是学生序号,元素值是成绩。
自定义两个函数,一个求平均分,一个输出低于平均分的学生序号和成绩。
函数接口定义:
double average(const double score[], int n); //返回n个double型元素的一维数组score的平均分
int display(const double score[],int n,double avg); //输出数组score中低于avg的序号和成绩(每个学生占一行),返回低于avg的个数
score
表示double型元素的数组的首地址(可以看做数组名);
n
表示数组的元素个数;
avg
表示数组的平均分;
average函数调用结束后得到数组的平均分,display函数调用结束后输出低于平均分的学生序号和成绩,返回输出个数。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include<iostream>
using namespace std;
double average(const double score[], int n); //返回n个double型元素的一维数组score的平均分
int display(const double score[],int n,double avg); //输出数组score中低于avg的序号和成绩,返回低于avg的个数
int input(double score[],double end); //输入一组数值到数组中,返回输入的个数,以-1表示输入结束
const int N=30;
int main()
{
double a[N];
const double END = -1;
int n=input(a,END); //调用input函数输入一组数据到数组a中,遇END结束,返回输入个数,即n是数组a的实际长度
double avg = average(a,n);
cout << "average is " << avg << endl;
int num = display(a,n,avg); //输出低于平均分的学生序号和成绩
cout << "There are " << num;
return 0;
}
int input(double score[],double end)
{
double value;
cin >> value;
int count=0;
while(value!=end && count<N)
{
score[count] = value;
count++;
cin >> value;
}
return count;
}
/* 请在这里填写两个自定义函数的定义答案 */
输入样例1:
40 50 80 60 90 -1
输出样例1:
average is 64
0:40
1:50
3:60
There are 3
输入样例2:
85 98 76 87 99 68 -1
输出样例2:
average is 85.5
0:85
2:76
5:68
There are 3
/* 请在这里填写两个自定义函数的定义答案 */
double average(const double score[], int n) //返回n个double型元素的一维数组score的平均分
{
double sum=0;
int i=0;
for(int i=0;i<n;i++)
{
sum+=score[i];
}
return sum*1.0/n;
}
int display(const double score[],int n,double avg)//输出数组score中低于avg的序号和成绩(每个学生占一行),返回低于avg的个数
{
int j=0,i=0;
for(int i=0;i<n;i++)
{
if(score[i]<avg)
{
cout<<i<<":"<<score[i]<<endl;
j++;
}
}
return j;
}