/*
*程序的版权和版本声明部分:
*Copyright(c)2013,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:刘中林
*完成日期:2013年 11月30日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述:输入看要求
*问题描述: 无
*程序输出: 成绩处理
*问题分析: 无
*算法设计:数组的应用
*/
#include <iostream>
#include<cmath>
#include<string>
int score[50];//保存成绩的数组,不会超过50名并设为全局变量
int num,i;//num为小组人数并设为全局变量
void input_score();
int get_max_score();
int get_min_score();
double get_avg_score();
int count(int);//考的最高成绩和最低成绩的同学的人数
void output_index(int);
double get_stdev_score();
using namespace std;
int main(void)
{
int max_score,min_score,avg_score;
cout<<"小组共有多少名同学?";
cin>>num;
cout<<"请输入学生成绩:"<<endl;
input_score();//要求score在0-100之间
max_score=get_max_score();
cout<<"最高成绩为:"<<max_score;
min_score=get_min_score();
cout<<"最低成绩:"<<min_score;
avg_score=get_avg_score();
cout<<"平均成绩为:"<<avg_score<<'\n';
cout<<"取得最高成绩"<<max_score<<"的共"<<count(max_score)<<"人,"<<"他们的学号是:";output_index(max_score);cout<<endl;
cout<<"取得最低成绩"<<min_score<<"的共"<<count(min_score)<<"人,"<<"他们的学号是:";output_index(min_score);cout<<endl;
//printf("取得最高成绩%d的共%d人,他们的学号是:%d\n",max_score,count(max_score),output_index(max_score));
//cout<<"取得最高成绩"<<max_score<<"的共"<<count(max_score)<<"人,他们的学号是:"<<output_index(max_score)<<endl;
//printf("取得最高成绩");cout<<min_score<<"的共"<<count(min_score)<<"人,他们的学号是:"<<output_index(min_score)<<endl;
cout<<"标准偏差为:"<<get_stdev_score()<<endl;
return 0;
}
void input_score()
{
for(i=0;i<num;i++)
{
cout<<"输入第"<<i<<"位同学的成绩:";
cin>>score[i];
if(score[i]<0||score[i]>100)
{
cout<<"输入第"<<i<<"位同学的成绩为:";
cin>>score[i];
}
}
}
int get_max_score()//求出并输出最高成绩
{
int max=0;
for(i=0;i<num;i++)
{
if(score[i]>max)
{
max=score[i];
}
}
return max;
}
int get_min_score()//最低成绩
{
int min=101;
for(i=0;i<num;i++)
{
if(score[i]<min)
{
min=score[i];
}
}
return min;
}
double get_avg_score()//平均成绩
{
int sum=0,avg;
for(i=0;i<num;i++)
{
sum+=score[i];
avg=sum/num;
}
return avg;
}
int count(int s) //求出并输出考得最高成绩和最低成绩人数
{
int i=0,z=0;
for(i=0;i<num;i++)
{
if(score[i]==s)
z++;
}
return z;
}
void output_index(int s)// 学号
{
int i=0;
for(i=0;i<num;i++)
{
if(score[i]==s)
cout<<i+1<<" ";
}
}
double get_stdev_score() //求出并输出标准偏差(选做)
{
int i;
double s,avg,sum=0,sum1=0;
for(i=0;i<num;i++)
{
sum+=score[i];
}
avg=sum/num;
for(i=0;i<num;i++)
{
sum1+=pow((score[i]-avg),2);
}
s=sqrt(sum1/(num-1));
return s;
}
*样例输出:
*心得体会:一次次的尝试才弄出来咯。。看改动就知道咯。。