第十五周项目4-多科成绩单

本程序实现对学生多科成绩的数据录入及统计分析,包括最高分、最低分、平均分及标准差等统计指标,并能输出各科成绩的具体统计结果。
  1. /* 
  2.  * Copyright (c) 2013, 烟台大学计算机学院 
  3. * All rights reserved. 
  4. * 作    者:王英华 
  5. * 完成日期:2013 年 12 月 8 日 
  6. * 版 本 号:v1.0 
  7. * 输入描述: 无 
  8. * 问题描述:多科成绩单 
  9. * 程序输出:略 
  10. * 问题分析:略 
  11. * 算法设计:略 
  12. */  
  13. #include<iostream>
    #include<cmath>
    #include<string>
    using namespace std;
    void input(double s[][4],int n); 
    double max(double s[][4],int n,int i);
    double min(double s[][4],int n,int i);
    double avg(double s[][4],int n,int i);
    double stdev(double s[][4],int n,int i);
    void output_result(double s[][4],int n);
    
    int main()
    {
    	int i,num;
    	string temp;
    	double score[100][4]; 
    	string course[4]={"高等数学","英语","C++","总分"};
    	cout<<"输入学生人数:";
    	cin>>num;
    	cout<<"依次输入高等数学、英语、C++的成绩:)"<<endl;
    	for(i=0;i<num;++i)
    	{
    		cin>>score[i][0]>>score[i][1]>>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=0;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 s[][4],int n,int j)
    {
    	double m=s[0][j];
    	for(int i=1;i<n;++i)
    		if (m<s[i][j])
    			m=s[i][j];
    		return m;
    }
    double min(double s[][4],int n,int j)
    {
    	double m=s[0][j];
    	for(int i=1;i<n;++i)
    		if (m>s[i][j])
    			m=s[i][j];
    		return m;
    }
    double avg(double s[][4],int n,int j)
    {
    	double sum=s[0][j];
    	for(int i=1;i<n;++i)
    		sum+=s[i][j];
    	return sum/n;
    }
    double stdev(double s[][4],int n,int j)
    {
    	double a,x,sum=0;
    	a=avg(s,n,j);
    	for(int i=0;i<n;i++)
        {
            x=s[i][j]-a;
            sum+=x*x;
        }
        return sqrt(sum/(n-1));
    }
    void output_result(double s[][4],int n)
    {
    	double m=max(s,n,3);
    	int i,c=0;
    	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)
                {
                    cout<<i;
                }
        }
        cout<<endl;
        m=min(s,n,3);
        c=0;
        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)
                {
                    cout<<i;
                }
        }
        cout<<endl;
    }
    

    运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值