#include <iostream>
#include <cstdio>
#include <cmath>
void input(int score[][4],int num);
void sum(int score[][4],int num);
void hscore(int score[][4],int num);
void lscore(int score[][4],int num);
void avee(int score[][4],int num);
void dev(int score[][4],int num);
using namespace std;
int main()
{
int score[100][4],num;
cout<<"请输入学生人数:";
cin>>num;
cout<<"依次输入输入学生高数,英语,C++成绩:"<<endl;;
input(score,num);//函数调用不用加数据类型
sum(score,num);
hscore(score,num);
lscore(score,num);
avee(score,num);
dev(score,num);
return 0;
}
void input(int score[][4],int num)
{
int i,j;
freopen("grade.txt","r",stdin);
for(i=0; i<num; i++)
{
for(j=0; j<3; j++)
{
cin>>score[i][j];
}
}
return;
}
//求各种和
void sum(int score[][4],int num)
{
int s=0,i,j;
for(i=0; i<num; i++)
{
for(j=0; j<3; j++)
{
s+=score[i][j];
}
score[i][3]=s;
s=0;
}
}
//求各种最大值
void hscore(int score[][4],int num)
{
int i,j,max;
max=-1;
for(j=0; j<4; j++)
{
for(i=0; i<num; i++)
{
if(score[i][j]>max)
{
max=score[i][j];
}
}
switch(j)
{
case 0:
cout<<"高数最高分:"<<max<<endl;
break;
case 1:
cout<<"英语最高分:"<<max<<endl;
break;
case 2:
cout<<"C++最高分:"<<max<<endl;
break;
case 3:
cout<<"总分最高分:"<<max<<endl;
break;
}
max=-1;
}
cout<<endl;
}
//求各种最低分
void lscore(int score[][4],int num)
{
int i,j,min=110;
for(j=0; j<4; j++)
{
for(i=0; i<num; i++)
{
if(score[i][j]<min)
{
min=score[i][j];
}
}
switch(j)
{
case 0:
cout<<"高数最低分:"<<min<<endl;
break;
case 1:
cout<<"英语最低分:"<<min<<endl;
break;
case 2:
cout<<"C++最低分:"<<min<<endl;
break;
case 3:
cout<<"总分最低分:"<<min<<endl;
break;
}
min=110;
}
cout<<endl;
return ;
}
//求各种平均分
void avee(int score[][4],int num)
{
double a=0,ave;
int i,j;
for(j=0; j<4; j++)
{
for(i=0; i<num; i++)
{
a+=score[i][j];
ave=a/num;
}
switch(j)
{
case 0:
cout<<"高数平均分:"<<ave<<endl;
break;
case 1:
cout<<"英语平均分:"<<ave<<endl;
break;
case 2:
cout<<"C++平均分:"<<ave<<endl;
break;
case 3:
cout<<"总分平均分:"<<ave<<endl;
break;
}
a=0;
}
cout<<endl;
return ;
}
//求各种标准偏差
void dev(int score[][4],int num)
{
int i,j;
double devv=0,ave,s,sum=0;
for(j=0; j<4; j++)
{
for(i=0; i<num; i++)
{
sum+=score[i][j];
}
ave=sum/num;
sum=0;
for(i=0; i<num; i++)
{
s=(score[i][j]-ave)*(score[i][j]-ave);
}
devv=sqrt(s)/(num-1);
s=0;
switch(j)
{
case 0:
cout<<"高数标准偏差:"<<devv<<endl;
break;
case 1:
cout<<"英语标准偏差:"<<devv<<endl;
break;
case 2:
cout<<"C++标准偏差:"<<devv<<endl;
break;
case 3:
cout<<"总分标准偏差:"<<devv<<endl;
break;
}
}
cout<<endl;
return ;
}
心得体会:输出最高成绩人数和学号没做,max最高分不知道怎么转换成int型了,,