/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 作 者:冯冬影
* 完成日期:2013 年12 月 11日
* 版本号: v1.0
* 输入描述:输入同学们的高数,英语,C++成绩
* 问题描述:算出每个同学的总分,高数,英语,C++的平均分
* 程序输出:输出总分,各科最高低分和平均分 ,最高分最低分的人数和对应的学号
* 问题分析:
*/
#include <iostream>
#include <string>
using namespace std;
void Zf(double score[][4],int n);//每个同学的总分
double max(double score[][4],int n,int j);//每学科的最高分
double min(double score[][4],int n,int j);//每学科的最低分
double avg(double score[][4],int n,int j);//每学科的平均分
int renshu(double x,double score[][4],int n,int j);//每学科的最高分,最低分的人数
void xuehao( double x,double score[][4],int n,int j);//最高分最低分对应的学号
int main()
{
double score[100][4];
string course[4]= {"高数","英语","c++","总分"};
int num;
double Max,Min;
cout <<"请输入人数:";
cin>>num;
for(int i=0; i<num; i++)
{
cout<<"请输入学号为"<<i<<"的高数,英语,C++的成绩:";
cin>>score[i][0]>>score[i][1]>>score[i][2];
}
Zf(score,num);
for(int j=0; j<3; j++)
{
cout<<course[j]<<"的最高成绩为:"<<max(score,num,j)<<",";
cout<<"最低成绩为:"<<min(score,num,j)<<",";
cout<<"平均成绩"<<avg(score,num,j)<<",";
Max=max(score,num,j);
cout<<"最高分的人数为:"<<renshu(Max,score,num,j)<<",";
cout<<"学号为:";
xuehao(Max,score,num,j);
Min=min(score,num,j);
cout<<"最低分的人数为:"<<renshu(Min,score,num,j)<<",";
cout<<"学号为:";
xuehao(Min,score,num,j);
cout<<endl;
}
return 0;
}
//每位同学的总分
void Zf(double score[][4],int n)
{
int sum;
for(int i=0; i<n; i++)
{
sum=0;
for(int j=0; j<3; j++)
sum+=score[i][j];
cout<<"学号为"<<i<<"的总成绩为:"<<sum<<endl;
}
cout<<endl;
}
//最高成绩
double max(double score[][4],int n,int j)
{
int max=score[0][j];
for(int i=0; i<n; i++)
if(max<score[i][j])
max=score[i][j];
return max;
}
//最低成绩
double min(double score[][4],int n,int j)
{
int min=score[0][j];
for(int i=0; i<n; i++)
if(min>score[i][j])
min=score[i][j];
return min;
cout<<endl;
}
//平均成绩
double avg(double score[][4],int n,int j)
{
double sun=score[0][j];
for(int i=1; i<n; i++)
sun+=score[i][j];
return sun/n;
}
//人数
int renshu(double x,double score[][4],int n,int j) //返回在数组n名同学中有多少人得x分(实参给出最高/低时,可以求最高/低成绩的人数)
{
int k=0;
for(int i=0; i<n; i++)
{
if(score[i][j]==x)
k++;
}
return k;
}
//学号
void xuehao(double x,double score[][4],int n,int j)//在函数中输出数组n名同学中得x分的学号(下标)
{
for(int i=0; i<n; i++)
{
if(score[i][j]==x)
cout<<i<<" ";
}
}
运行结果
心得:弄个小成绩单原来这样艰难!!!