zoukankan      html  css  js  c++  java
  • 第十四周项目3-多科成绩单

    某班不超过100名同学。用二维数组score[][4]保存同学们的高数、英语、C++成绩及总成绩(在此假设学生的学号为整型的连续值,用数组的行下标作学号)。
    (1)输入学生的实际人数num,在输入各科的成绩时,输入3科成绩后可以自动求出总分,并将数据全保存到数组中;
    (2)输出各门课及总分的最高成绩、最低成绩、平均成绩。

    /*
     *Copyright (c) 2014,烟台大学计算机学院
     *All gight reserved.
     *文件名称:temp.cpp
     *作者:邵帅
     *完成时间:2014年11月27日
     *版本号:v1.0
    */
    #include<iostream>
    #include<string>
    using namespace std;
    void input(double s[][4],int n); //输入成绩
    void output(double s[][4],int n); //输出成绩
    double max(double s[][4],int n,int i); //求第i门课的最高成绩,i=3时是总分
    double min(double s[][4],int n,int i); //求第i门课的最低成绩
    double avg(double s[][4],int n,int i); //求第i门课的平均成绩
    int main()
    {
        int i,num;
        string temp;
        double score[100][4]; //设一个班最多100人,实际按输入来
        string course[4]= {"高等数学","英语","C++","总分"};
        cout<<"输入学生人数:";
        cin>>num;
        //(1)输入成绩并求出总分
        input(score,num);
        //(2)输出成绩
        output(score,num);
        //(3)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
        for(i=0; i<4; ++i)
        {
            cout<<course[i]<<"的最高成绩是"<<max(score,num,i)<<", ";
            cout<<"最低成绩是"<<min(score,num,i)<<", ";
            cout<<"平均成绩是"<<avg(score,num,i)<<", ";
            cout<<endl;
        }
        return 0;
    }
    void input(double s[][4],int n)
    {
        int i,j,sum;
        cout<<"请依次输入高等数学、英语、C++的成绩:"<<endl;
        for (i=0,sum=0; i<n; i++,sum=0)
        {
            cout<<"请输入第"<<i<<"名同学的成绩:";
            for (j=0; j<3; j++)
            {
                cin>>s[i][j];
                sum+=s[i][j];
            }
            s[i][3]=sum;
        }
    }
    void output(double s[][4],int n)
    {
        cout<<"依次输出高等数学、英语、C++和总分的成绩:"<<endl;
        int i,j;
        for (i=0; i<n; i++)
        {
            cout<<"第"<<i<<"位学生成绩为:";
            for (j=0; j<4; j++)
                cout<<s[i][j]<<" ";
            cout<<endl;
        }
    }
    double max(double s[][4],int n,int i)
    {
        int j;
        double max;
        max=s[0][i];
        for (j=0; j<n; j++)
            if (s[j][i]>max)
                max=s[j][i];
        return max;
    }
    double min(double s[][4],int n,int i)
    {
        int j;
        double min;
        min=s[0][i];
        for (j=0; j<n; j++)
            if (s[j][i]<min)
                min=s[j][i];
        return min;
    }
    double avg(double s[][4],int n,int i)
    {
        int j;
        double avg,sum=0;
        for (j=0; j<n; j++)
            sum+=s[j][i];
        avg=sum/n;
        return avg;
    }

    运行结果:



    (3)增加用数组string name[]表示同学们的姓名,使姓名与成绩的下标保持一致(例如name[1]和score[1][0]、score[1][1]、score[1][2]和score[1][3]表示同一位同学的数据)。请在写上面的程序的基础上,输出获得最高成绩的同学的名单。

    /*
     *Copyright (c) 2014,烟台大学计算机学院
     *All gight reserved.
     *文件名称:temp.cpp
     *作者:邵帅
     *完成时间:2014年11月27日
     *版本号:v1.0
    */
    #include<iostream>
    #include<string>
    using namespace std;
    void input(double s[][4],string name[],int n); //输入成绩
    void output(double s[][4],string name[],int n); //输出成绩
    double max(double s[][4],int n,int i); //求第i门课的最高成绩,i=3时是总分
    double min(double s[][4],int n,int i); //求第i门课的最低成绩
    double avg(double s[][4],int n,int i);//求第i门课的平均成绩
    double namemax(double s[][4],int n,int i);
    int main()
    {
        int i,num,j,m=0;
        int a[100];
        int max1,o;
        string temp;
        double score[100][4]; //设一个班最多100人,实际按输入来
        string course[4]= {"高等数学","英语","C++","总分"};
        string name[100];
        cout<<"输入学生人数:";
        cin>>num;
        //(1)输入成绩并求出总分
        input(score,name,num);
        //(2)输出成绩
        output(score,name,num);
    
        //(3)输出各门课及总分的最高成绩、最低成绩、平均成绩和成绩的标准偏差;
        for(i=0; i<4; i++,m=0)
        {
            max1=max(score,num,i);
            for (o=0,j=0; j<num; j++)
                if (max1==score[j][i])
                {
                    a[m]=j;
                    m++;
                    o++;
                }
            cout<<course[i]<<"最高成绩是"<<max(score,num,i)<<", ";
            cout<<"最低成绩是"<<min(score,num,i)<<", ";
            cout<<"平均成绩是"<<avg(score,num,i)<<", ";
            cout<<"最高成绩的同学是:";
            for (m=0; m<o; m++)
                cout<<name[a[m]]<<" ";
            cout<<endl;
        }
        return 0;
    }
    void input(double s[][4],string name[],int n)
    {
        int i,j,sum;
        cout<<"请依次输入高等数学、英语、C++的成绩:"<<endl;
        for (i=0,sum=0; i<n; i++,sum=0)
        {
            cout<<"请输入第"<<i<<"名同学的姓名:";
            cin>>name[i];
            cout<<"请输入"<<name[i]<<"同学的成绩:";
            for (j=0; j<3; j++)
            {
                cin>>s[i][j];
                sum+=s[i][j];
            }
            s[i][3]=sum;
        }
    }
    void output(double s[][4],string name[],int n)
    {
        cout<<"依次输出高等数学、英语、C++和总分的成绩:"<<endl;
        int i,j;
        for (i=0; i<n; i++)
        {
            cout<<"第"<<i<<"位学生"<<name[i]<<"成绩为:";
            for (j=0; j<4; j++)
                cout<<s[i][j]<<" ";
            cout<<endl;
        }
    }
    double max(double s[][4],int n,int i)
    {
        int j;
        double max;
        max=s[0][i];
        for (j=0; j<n; j++)
            if (s[j][i]>max)
                max=s[j][i];
        return max;
    }
    double min(double s[][4],int n,int i)
    {
        int j;
        double min;
        min=s[0][i];
        for (j=0; j<n; j++)
            if (s[j][i]<min)
                min=s[j][i];
        return min;
    }
    double avg(double s[][4],int n,int i)
    {
        int j;
        double avg,sum=0;
        for (j=0; j<n; j++)
            sum+=s[j][i];
        avg=sum/n;
        return avg;
    }

    运行结果:



    @ Mayuko

  • 相关阅读:
    (原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码
    (学)新版动态表单研发,阶段成果3
    (学) 如何将 Oracle 序列 重置 清零 How to reset an Oracle sequence
    (学)XtraReport WebService Print 报错
    (原)三星 i6410 刷机 短信 无法 保存 解决 办法
    (原) Devexpress 汉化包 制作工具、测试程序
    linux下网络配置
    apache自带ab.exe小工具使用小结
    Yii::app()用法小结
    PDO使用小结
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567605.html
Copyright © 2011-2022 走看看