/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者: 刘同宾
* 完成日期:2012 年 12 月 02 日
* 版 本 号:v1.0
*
* 输入描述:
* 问题描述:【项目3- 成绩处理】在数组score中将要存储某小组C++程序设计的成绩,请设计完成下面的各功能函数,并将它们组合成一个完整的应用:
* (1)输入小组人数及成绩;
* (2)输出该小组的最高成绩、最低成绩、平均成绩和成绩的标准偏差(标准偏差公式:,其中为样本,为均值,为样本数目);
* (3)输出考得最高成绩和最低成绩的同学的人数及对应的学号(设成绩对应的下标即学号,可能有相同的成绩)
* (4)(选做)输出前3名同学的学号——可以先不考虑有并列名次的情况,再考虑有并列的情况。
* 程序输出:
* 问题分析:略
* 算法设计:略
*/
#include<iostream>
using namespace std;
void input(int score[],int n);
int max(int score[],int n);
int min(int score[],int n);
double average(int score[],int n);
int count1(int score[],int n,int s);
void num(int score[],int n,int s);
int main()
{
int n; //小组人数也设为局部变量,将作为函数的实际参数
int score[50]; //将score设为局部变量,通过数组名作函数参数,传递数组首地址,在函数中操作数组
int max1,min1;
cout<<"请输入有几位学生:"<<endl;
cin>>n;
input(score,n);
max1=max(score,n);
cout<<"最高成绩:"<<max1
<<"共有:"<<count1(score,n,max1)<<"人。"
<<endl;
min1=min(score,n);
cout<<"最低成绩:"<<min1
<<"共有"<<count1(score,n,min1)<<"人。"
<<endl;
cout<<"平均成绩为:"<<average(score,n)<<endl;
cout<<"最高成绩的学号有:";
num(score,n,max1);
cout<<"最低成绩的学号有:";
num(score,n,min1);
return 0;
}
//最高成绩
int max(int score[],int n)
{
int i;
int max1=score[0];
for(i=0;i<n;i++)
{
if(score[i]>max1)
{
max1=score[i];
}
}
return max1;
}
//最低成绩
int min(int score[],int n)
{
int i;
int min1=score[0];
for(i=0;i<n;i++)
{
if(min1>score[i])
{
min1=score[i];
}
}
return min1;
}
//平均成绩
double average(int score[],int n)
{
int i;
double t=0,average1;
for(i=0;i<n;i++)
{
t=t+score[i];
}
average1=t/n;
return average1;
}
//最高,低,分数人数
int count1(int score[],int n,int s)
{
int i;
int count=0;;
for(i=0;i<n;i++)
{
if(score[i]==s)
{
count++;
}
}
return count;
}
//最高,低分的人的下标
void num(int score[],int n,int s)
{
int i;
for(i=0;i<n;i++)
{
if(score[i]==s)
{
cout<<i+1<<" ";
}
}
}
//输入函数
void input(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个学生的成绩:";
cin>>score[i];
cout<<endl;
}
return;
}