/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者:王颖
* 完成日期:2013 年 11 月 26 日
* 版 本 号:v1.0
*
* 输入描述: 无
* 问题描述:用数组做成绩处理
* 程序输出:略
* 问题分析:略
* 算法设计:略
*/
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main(void)
{
int score[50];
int num,m,i,j,l,k,t,p,x=0,y=0,ave=0;
double n, s=0,num1=0,sum=0;
cout<<"小组共有多少名同学:"; //小组人数
cin>>n;
//freopen("fun.txt","r",stdin);
for(j=0; j<n; j++)
{
cout<<"输入第"<<j<<"名学生的成绩:"<<endl;
cin>>num;
score[j]=num; //输入num名同学的成绩
if(score[j]>100||score[j]<0)
{
cout<<"error!"<<endl;
m=score[j];
cout<<"输入第"<<j<<"名学生的成绩:"<<endl;
cin>>num;
score[j]=num;
}
sum+=score[j];
}
int max=-1,min=100;
for(i=0; i<n; i++) //求出并输出最高成绩、最低成绩和平均成绩
{
if(max<score[i])
{
max=score[i];
}
if(min>score[i])
{
min=score[i];
}
}
if(n!=0)
{
ave=sum/n;
}
cout<<"最高成绩为:"<<max<<",最低成绩为"<<min<<",平均成绩为:"<<ave<<endl;
//求出并输出考得最高成绩和最低成绩人数以及学号
for(k=0;k<n;k++)
{
if((max==score[k]))
{
x++;
}
if((min==score[k]))
{
y++;
}
}
cout<< "取得最高成绩" <<max<<"的共有"<<x<<"人,他们的学号分别是:"<<endl;
for(t=0;t<n;t++)
{
if(max==score[t])
cout<<t<<" ";
}
cout<< "取得最低成绩" <<min<<"的共有"<<y<<"人,他们的学号分别是:";
for(p=0;p<n;p++)
{
if(min==score[p])
cout<<p<<" ";
}
for(l=0;l<n;l++)
{
if(n>1) //求出并输出标准偏差(选做)
{
num1+=(score[l]-ave)*(score[l]-ave);
}
}
s=sqrt(num1/(n-1));
cout<<"标准差值为:"<<s<<endl;
return 0;
}
心得体会:这个题是我做的最长时间的题,从刚开始到后来慢慢一点一点的做,我理解了许多,慢慢做,注意细节。