15_4多科成绩单

/* 
* 程序的版权和版本声明部分 
* 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 ;
}  
运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值