Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者:庄子豪
* 完成日期:2012 年 12月09日
* 版 本 号:v1.0
*
* 输入描述:
* 问题描述:
* 程序输出:
* 问题分析:
*算法设计:
#include <iostream>
#include <string>
#include <cmath>
double get_max_score(double a[][5],int num,int j);
double get_min_score(double a[][5],int num,int j);
double get_avg_score(double a[][5],int num,int j);
double get_stdev_score(double a[][5],int num,int j);
output_score(double a[][5],int num);
using namespace std;
int main()
{
int i,j,m,n,num;
double score,a[10000][5];
string b[5]={"学号","高数","英语","c++","总成绩"};
cout<<"请输入学生数量:";
cin>>num;
for(i=0;i<num;i++)
{
cout<<"请依次输入学号为"<<i<<"学生的高数,英语,c++成绩:";
a[i][0]=i;
for(j=1;j<4;j++)
{
cin>>score;
a[i][j]=score;
}
a[i][4]=a[i][1]+a[i][2]+a[i][3];
}
cout<<b[0]<<'\t'<<b[1]<<'\t'<<b[2]<<'\t'<<b[3]<<'\t'<<b[4]<<"\n";
for(n=0;n<num;n++)
{
cout<<"\n";
for(m=0;m<5;m++)
{
cout<<a[n][m]<<'\t';
}
}
cout<<"\n";
for(i=1;i<4;i++)
{
cout<<b[i]<<"的最高成绩"<<get_max_score(a,num,i)<<",";
cout<<"最低成绩是"<<get_min_score(a,num,i)<<", ";
cout<<"平均成绩是"<<get_avg_score(a,num,i)<<", ";
cout<<"成绩的标准偏差是"<<get_stdev_score(a,num,i)<<endl;
}
output_score(a,num);
cout<<"\n";
return 0;
}
double get_max_score(double a[][5],int num,int j)
{
int i;
double max;
max=-1;
for(i=0;i<num;i++)
{
if(a[i][j]>max)
{
max=a[i][j];
}
}
return max;
}
double get_min_score(double a[][5],int num,int j)
{
int i;
double min;
min=100000;
for(i=0;i<num;i++)
{
if(a[i][j]<min)
{
min=a[i][j];
}
}
return min;
}
double get_avg_score(double a[][5],int num,int j)
{
int sum=0,i;
for(i=0;i<num;i++)
{
sum=sum+a[i][j];
}
return sum/num;
}
double get_stdev_score(double a[][5],int num,int j)
{
int i;
double b,x,sum=0;
b=get_avg_score(a,num,j);
for( i=0;i<num;i++)
{
x=a[i][j]-b;
sum+=x*x;
}
return sqrt(sum/(num-1));
}
output_score(double a[][5],int num)
{
double max=get_max_score(a,num,4);
int i,c=0;
bool first=true;
cout<<"总分最高分为"<<max;
for(i=0;i<num;++i)
{
if(a[i][4]==max)
++c;
}
cout<<",有"<<c<<"人达到最高分,他们的学号是:";
for(i=0;i<num;++i)
{
if(a[i][4]==max)
if(first)
{
cout<<i;
first=false;
}
else
{
cout<<"、"<<i;
}
}
cout<<endl;
double min=get_min_score(a,num,4);
c=0;
first=true;
cout<<"总分最低分为"<<min;
for(i=0;i<num;++i)
{
if(a[i][4]==min)
++c;
}
cout<<",有"<<c<<"人达到最低分,他们的学号是:";
for(i=0;i<num;++i)
{
if(a[i][4]==min)
if(first)
{
cout<<i;
first=false;
}
else
{
cout<<"、"<<i;
}
}
cout<<endl;
}
贺老师,,为啥我电脑发代码的时候总是乱码,,??