您的位置:首页 > 其它

第十三周项目3-成绩处理函数版

2014-11-24 11:41 134 查看
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作    者:梁璨
* 完成日期:2014 年 11  月  25  日
* 版 本 号:v1.0
*
* 问题描述:在数组score中将要存储某小组的成绩。(利用函数完成);
* 输入描述:输入学生成绩和人数;
* 程序输出: 输出该小组的最高成绩、最低成绩、平均成绩、考得最高、低成绩的人数和他们的学号以及所有同学成绩的标准偏差。
*/
#include <iostream>

#include <cmath>

using namespace std;

void input_score(int s[],int n);//将小组中n名同学的成绩输入数组s

int get_max_score(int s[],int n);//返回数组s中n名同学的最高成绩

int get_min_score(int s[],int n);//返回数组s中n名同学的最低成绩

double get_avg_score(int s[],int n);//返回数组s中n名同学的平均成绩

double get_stdev_score(int s[],int n);//返回数组s中n名同学成绩值的标准偏差

int count(int x,int s[],int n);//返回在数组s中n名同学中有多少人得x分(实参给出最高/低时,可以求最高/低成绩的人数)

void output_index(int x,int s[],int n);//在函数中输出数组s中n名同学得X分的学号(下标)

int main()
{
int score[50];
int num;
int max_score,min_score;
cout<<"小组共有多少名同学?";
cin>>num;
cout<<endl<<"请输入学生成绩:"<<endl;
input_score(score,num);//要求成绩在0-100之间
max_score=get_max_score(score,num);
cout<<"最高成绩为:"<<max_score<<",共有"<<count(max_score,score,num)<<"人。";
min_score=get_min_score(score,num);
cout<<"最低成绩为:"<<min_score<<",共有"<<count(min_score,score,num)<<"人。";
cout<<"平均成绩为:"<<get_avg_score(score,num);
cout<<"标准偏差为:"<<get_stdev_score(score,num);
cout<<endl<<"获最高成绩的学生(学号)有:";
output_index(max_score,score,num);
cout<<endl<<"获最低成绩的学生(学号)有:";
output_index(min_score,score,num);
cout<<endl;
return 0;
}
void input_score(int s[],int n)
{
int i;
for(i=0; i<n; i++)
{
cout<<"输入第"<<i<<"位同学的成绩:";
cin>>s[i];
if(s[i]>100||s[i]<0)
{
cout<<"输入第"<<i<<"位同学的成绩:";
cin>>s[i];
n++;
}
}
}
int get_max_score(int s[],int n)
{
int max_score=0;
int i;
for(i=0; i<n; i++)
{
if(s[i]>max_score)
max_score=s[i];
}
return max_score;
}
int get_min_score(int s[],int n)
{
int min_score=100;
int i;
for(i=0; i<n; i++)
{
if(s[i]<min_score)
min_score=s[i];
}
return min_score;
}
double get_avg_score(int s[],int n)
{
int i;
double sum=0,avg;
for(i=0; i<n; i++)
sum+=s[i];
avg=sum/n;
return avg;
}
double get_stdev_score(int s[],int n)
{
int i;
double stdev,k,f;
stdev=get_avg_score(s,n);
for(i=0; i<n; i++)
{
k+=(s[i]-stdev)*(s[i]-stdev);
k/=(n-1);
}
f=sqrt(k);
return f;
}
int count(int x,int s[],int n)
{
int i,m=0;
for(i=0; i<n; i++)
{
if(s[i]==x) m++;
}
return m;
}
void output_index(int x,int s[],int n)
{
int i;
for(i=0; i<n; i++)
{
if(s[i]==x) cout<<i<<" ";
}
return;
}
运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: