/*
作者:刘晓晓
时间:2013.11.30
问题描述:
(1)输入小组人数及成绩,要保证成绩在0-100之间;
(2)输出该小组的最高成绩、最低成绩、平均成绩;
(3)输出考得最高成绩和最低成绩的同学的人数;
(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。
*/
#include <iostream>
#include <cmath>
#include<cstdio>
using namespace std;
int main(void)
{
int score [50] ;
int num,i;
cout<<"小组中共有多少名同学?" ;
cin>>num;
cout<<"请输入学生的成绩:"<<endl;
//输入numm名同学的成绩
for(i=0;i<=num;i++)
do
{
cout<<"第"<<i<<"个同学的成绩:";
cin>>score[i];
}
while (score[i]<0||score[i]>100);
//求出并输出最高成绩,最低成绩和平均成绩
int max=-1,min=999,sum=0,ave;
for(i=0;i<=num;i++)
{
if(score[i]>max)
max=score[i];
if(score[i]<min)
min=score[i];
sum+=score[i];
}
ave=sum/num;
cout<<"最高成绩为:"<<max<<"最低成绩为 "<<min<<"平均成绩为 "<<ave<<endl;
//求出并输出考得最高成绩和最低成绩人数
int max_a=0,min_b=0;
for(i=0;i<num;i++)
{
if(max==score[i])
max_a++;
if(min==score[i])
min_b++;
}
cout<<"考取最高成绩"<<max<<"的有"<<max_a<<"个人"<<"他们的学号为:";
for(i=0;i<num;i++)
{
if (max==score[i])
cout<<i<<" ";
}
cout<<endl;
cout<<"考取最低成绩"<<min<<"的有"<<min_b<<"个人"<<"他们的学号是:";
for (i=0;i<num;i++)
{
if(min==score[i])
cout<<i<<" ";
}
cout<<endl;
return 0;
}
心得:从看到要求的不知所措,到先分成好几个小题做,然后再串联起来。整个题就很清楚了。虽然花费了大量的时间,不过真的体会到了不一样的快乐。