/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: array.cpp
* 作 者: 纪子龙
* 完成日期:2012 年 12月10 日
* 版本号: v1.0
* 输入描述:无
* 问题描述:定义二维数组,为数组赋初值、输入值、
更改值、按各种方法输出
*/
#include <iostream>
#include <Cmath>
#include <string>
using namespace std;
double max(double a[][4],int m, int j);
double min(double a[][4],int m, int j);
double avg(double a[][4], int m,int j);
double stdev(double a[][4],int m, int j );
void output_result(double s[][4],int n);
int main ()
{
int i,num;
double score[100][4];
string course[5]={"学号","高等数学","英语","C++","总分"};
cout<<"请输入同学人数"<<endl;
cin>>num;
for(i=0;i<num;i++)
{
cout<<"请输入学号为"<<i<<"的c++成绩"<<endl;
cin>>score[i][0];
cout<<"请输入学号为"<<i<<"的高数成绩"<<endl;
cin>>score[i][1];
cout<<"请输入学号为"<<i<<"的英语成绩"<<endl;
cin>>score[i][2];
score[i][3]=score[i][0]+score[i][1]+score[i][2];
}
/*输出成绩
*/
cout<<"输入的学生成绩为:"<<endl;
cout<<"学号\t高数\t英语\tC++\t总分"<<endl;
for(i=0;i<num;++i)
{ cout<<i<<'\t'<<score[i][0]<<'\t';
cout<<score[i][1]<<'\t';
cout<<score[i][2]<<'\t';
cout<<score[i][3]<<endl;
}
/*输出各种成绩
*/
for(i=1;i<4;i++) {
cout<<course[i]<<"的最高成绩是"<<max(score,num,i)<<", ";
cout<<"最低成绩是"<<min(score,num,i)<<", ";
cout<<"平均成绩是"<<avg(score,num,i)<<", ";
cout<<"成绩的标准偏差是"<<stdev(score,num,i)<<endl;
}
output_result(score,num);
return 0;
}
/*
函数部分
*/
double max(double a[][4],int m, int j)
{
double s=a[0][j];
for(int i=1;i<m;i++)
if(s<a[i][j])
s=a[i][j];
return s;
}
double min(double a[][4],int m, int j)
{
double s=a[0][j];
for(int i=1;i<m;i++)
if(s>a[i][j])
s=a[i][j];
return s;
}
double avg(double a[][4], int m,int j)
{
double sum=a[0][j];
for(int i=1;i<m;i++)
sum=sum+a[i][j];
return sum/m;
}
double stdev(double a[][4],int m, int j )
{
double s,x,sum=0;
s=avg(a,m,j);//平均成绩
for(int i=0;i<m;i++)
{
x=a[i][j]-s;
sum+=x*x;
}
return sqrt(sum/(m-1));
}
//输出考得总分最高、最低同学的人数及对应的学号。
void output_result(double s[][4],int n)
{
double m=max(s,n,3);
int i,c=0;
bool first=true;
cout<<"总分最高分为"<<m;
for(i=0;i<n;++i)
{
if(s[i][3]==m)//直接用s[i][3]==m可能会因精度而错误
++c;
}
cout<<",有"<<c<<"人达到最高分,他们的学号是:";
for(i=0;i<n;++i)
{
if(s[i][3]==m)
if(first)
{
cout<<i;
first=false;
}
else
{
cout<<"、"<<i;
}
}
cout<<endl;
//关于最低成绩
m=min(s,n,3);
c=0;
first=true;
cout<<"总分最低分为"<<m;
for(i=0;i<n;++i)
{
if(s[i][3]==m)
++c;
}
cout<<",有"<<c<<"人达到最低分,他们的学号是:";
for(i=0;i<n;++i)
{
if(s[i][3]==m)
if(first)
{
cout<<i;
first=false;
}
else
{
cout<<"、"<<i;
}
}
cout<<endl;
return ;
}
运行结果:
15_4多科成绩单
最新推荐文章于 2021-07-04 08:30:33 发布