上机内容:多科成绩,二维加函数
上机目的:学习
/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者:刘杰
* 完成日期:2012 年12 月9 日
* 版 本 号: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[1000][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=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+=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;
}
运行结果: