【二维数组】15周项目四。多科成绩单

原创 2013年12月06日 15:32:10

上机内容:C++程序的编写和运行
上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程
我的程序:

文件math.txt

86 87 76 77 96 94 80 64 63 87
96 88 80 60 65 64 78 77 65 89
65 98 67 77 87 88 85 56 59 70

 

/*
Copyright (c) 2013, 烟台大学计算机学院
.* All rights reserved.
.* 作    者:赵玲玲
.* 完成日期:2013 年 12 月 6 日
.* 版 本 号:v1.0
.* 输入描述: 文件
.* 问题描述: 多科成绩单
.* 程序输出:略
.* 问题分析:按照要求,用函数调用,数组等来完成
.*/
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int input_s(double score[][4],int n);           //成绩是double型的
void output_s1(double score[][4],int n);
void output_s2(double score[][4],int n);
int main()
{
    int num;
    double score[100][4];
    cout<<"请输入学生人数:";
    cin>>num;
    //调用函数,求出总分
    input_s(score,num);                         //调用时写数组名
    output_s1(score,num);
    output_s2(score,num);
    return 0;
}
int input_s(double score[][4],int n)
{
    int i,j,sum=0;
    //输入各科成绩
    freopen("math.txt","r",stdin);              //打开含有成绩的文件
    cout<<"请输入所有同学的高数成绩:"<<endl;
    for(i=0; i<n; i++)
    {
        cin>>score[i][0];
    }
    cout<<"请输入所有同学的英语成绩:"<<endl;
    for(i=0; i<n; i++)
    {
        cin>>score[i][1];
    }
    cout<<"请输入所有同学的c++成绩:"<<endl;
    for(i=0; i<n; i++)
    {
        cin>>score[i][2];
    }
    //求出各科总分保存在score[i][3]里面
    for(i=0; i<n; i++)
    {
        for(j=0; j<3; j++)
        {
            sum+=score[i][j];                    //本来是直接存到数组里面的,不可行,只能借助中间变量了
        }
        score[i][3]=sum;
        sum=0;
    }
    cout<<endl;
    return 0;
}
//各科各种成绩
void output_s1(double score[][4],int n)
{
    int i,j;
    double max=0,min=101,ave,dve,sum=0,summ,ssum;
    for(j=0; j<4; j++)
    {
        for(i=0; i<n; i++)
        {
            if(max<score[i][j])                  //最大值
            {
                max=score[i][j];
            }
            if(min>score[i][j])                  //最小值
            {
                min=score[i][j];
            }
            sum+=score[i][j];                    //求和

        }
        summ=sum;
        sum=0;
        ave=summ/n;                              //平均数
        for(i=0; i<n; i++)                       //循环来求得标准偏差
        {
            ssum+=(score[i][j]-ave)*(score[i][j]-ave);
        }
        dve=sqrt(ssum/(n-1));
        switch(j)
        {
        case 0:
            cout<<"高数最高成绩是:"<<max<<"  "<<"最低成绩是"<<min<<"  "<<"平均成绩是:"<<ave<<"  "<<"标准偏差是"<<dve<<endl;
            break;
        case 1:
            cout<<"英语最高成绩是:"<<max<<"  "<<"最低成绩是"<<min<<"  "<<"平均成绩是:"<<ave<<"  "<<"标准偏差是"<<dve<<endl;
            break;
        case 2:
            cout<<"c++最高成绩是:"<<max<<"  "<<"最低成绩是"<<min<<"  "<<"平均成绩是:"<<ave<<"  "<<"标准偏差是"<<dve<<endl;
            break;
        case 3:
            cout<<"总分最高成绩是:"<<max<<"  "<<"最低成绩是"<<min<<"  "<<"平均成绩是:"<<ave<<"  "<<"标准偏差是"<<dve<<endl;
            break;
        }
        ave=0;max=0; min=101;ssum=0;                //归零
    }
    cout<<endl;
    return ;
}
//总分最值,人数,学号
void output_s2(double score[][4],int n)
{
    int i,max=0,min=1000,k=0,l=0;                  
    for(i=0; i<n; i++)                             //最高最低
    {
        if(max<score[i][3])
        {
            max=score[i][3];
        }
        if(min>score[i][3])
        {
            min=score[i][3];
        }
    }
    for(i=0; i<n; i++)                              //人数
    {
        if(max==score[i][3])
        {
            k++;
        }
        if(min==score[i][3])
        {
            l++;
        }
    }
    cout<<"总分最高为:"<<max<<"  ."<<"有"<<k<<"人."<<"  "<<"学号为:";
    for(i=0; i<n; i++)                              //最高的学号
    {
        if(max==score[i][3])
        {
            cout<<i<<","<<endl;
        }
    }
    cout<<"总分最低为:"<<min<<"  ."<<"有"<<l<<"人."<<"  "<<"学号为:";
    for(i=0; i<n; i++)                              //最低的学号
    {
        if(min==score[i][3])
        {
            cout<<i<<",";
        }
    }
    return ;

}


 

我的结果:

心得体会:可算是做出来了,我的天。。。一开始做的真是浑身难受,这是做的第三遍了,思路好不容易才弄清
知识点总结:数组定义域声明的区别。函数调用数组。引入文件。


                    

【二维数组】15周项目四(带名字)。多科成绩单

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序: 文件grade.txt 86 87 76 77 96 94 80 64 63 87...

【二维数组】15周项目一。大折腾

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序:/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机...

15周项目一:折腾二维数组。

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: array.cpp * 作 者:...

15周项目1-折腾二维数组

/* * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: array.cpp * 作 者:...

【数组】15周项目三(2)。带姓名的成绩单

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序: 运行结果: 心得体会: 知识点总结:略...

【数组】15周项目三(1)。带姓名的成绩单 .

上机内容:C++程序的编写和运行 上机目的:掌握简单C++程序的编辑、编译、连接和运行的一般过程 我的程序: /* Copyright (c) 2013, 烟台大学计算机学院 * All r...

第十四周项目3-多科成绩单1

/*  *Copyright(c)2014,烟台大学计算机学院  *All rights reserved.  *文件名称:test.cpp  *作者:梁璨  *完成日期:2014年 11月 27日 ...

第14周项目3--多科成绩单(1)

/* *Copyright(c)2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:姜甜甜 *完成日期:2014年 11...
  • tingary
  • tingary
  • 2014年11月27日 16:03
  • 424

14周项目3 多科成绩单

main cpp #include #include using namespace std; void input(double s[][4],int n); double max(double s...

第十四周 项目三--多科成绩单(3.3)

问题及代码: /* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:吴胜男 *完成日期:201...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【二维数组】15周项目四。多科成绩单
举报原因:
原因补充:

(最多只允许输入30个字)