成绩登记器

#include<iostream>
using namespace std;
int ReadScore(long num[],float score[])
{
int n=-1;
for(int j=0;j<30;j++)
num[j]=0;
for(int i=0;i<30;i++)
{
cout<<"请输入学号:";
cin>>num[i];
cout<<"输入成绩:";
cin>>score[i];
cout<<endl;
n++;
if(score[i]<0)
break;
}
return n;
}
int GetFail(long num[],float score[],int i)
{
int Fail=0;
for(i=0;i<30;i++)
{
if(score[i]<60&&score[i]>=0&&num[i]!=0)
{ Fail++;
cout<<"学号为"<<num[i]<<endl;
}
}
cout<<"不及格人数有"<<Fail<<"个"<<endl;
return Fail;
}
float GetAver(float score[],int n)
{
double sum=0,aver;
for(int i=0;i<n;i++)
sum=sum+score[i];
aver=sum/n;
return aver;
}
int GetAboveAver(long num[],float score[],int n)
{
int AboveAver=0,i=0;
double sum=0,aver=0;
for(i=0;i<n;i++)
{
sum=sum+score[i];
aver=sum/n;
}
for(i=0;i<n;i++)
{
if(score[i]>=aver)
AboveAver++;
}
for(i=0;i<n;i++)
{
if(score[i]>=aver)
cout<<num[i]<<endl;
}
cout<<"成绩在全班平均分及之上的人数有:"<<AboveAver<<"个"<<endl;
return AboveAver;
}
void GetDetail(float score[],int n)
{
int new_grade;
double stu[6]={0,0,0,0,0,0};
for(int i=0;i<n;i++)
{
new_grade=score[i]/10;
switch(new_grade)
{
case 10:
new_grade=5;
stu[5]++;
break;
case 9:
new_grade=4;
stu[4]++;
break;
case 8:
new_grade=3;
stu[3]++;
break;
case 7:
new_grade=2;
stu[2]++;
break;
case 6:
new_grade=1;
stu[1]++;
break;
default:
new_grade=0;
stu[0]++;
}
}
for(i=0;i<6;i++)
{

cout<<i<<"该分数段的人数及所占的百分比为"<<stu[i]/n*100<<"%"<<endl;
}
}
int main()
{
long num[30];float score[30];float a,b;
a=ReadScore(num,score);
cout<<"@@@@@@@@@@@@@@@@@@"<<endl;
for(int i=0;i<a;i++)
{
if(score[i]>0)
cout<<"学号"<<num[i]<<"成绩"<<score[i]<<endl;
}
cout<<"总人数为:"<<a<<endl;
cout<<"@@@@@@@@@@@@@@@@@@"<<endl;
cout<<"不及格的人数及名单为"<<endl;
GetFail(num,score,a);
cout<<"@@@@@@@@@@@@@@@@@@"<<endl;
b=GetAver(score,a);
cout<<"全班的平均分为:"<<b<<endl;
cout<<"成绩在全班平均分及之上的人数和名单"<<endl;
GetAboveAver(num,score,a);
cout<<"@@@@@@@@@@@@@@@@@@@"<<endl;
cout<<"各分数段的人数及所占百分比"<<endl;
GetDetail(score,a);
return 0;
}

posted @ 2012-12-06 15:58  呆到久时自然萌  阅读(200)  评论(2编辑  收藏  举报