关闭

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

标签: c++iostreamnamespace数组
567人阅读 评论(0) 收藏 举报

上机内容: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 ;

}


 

我的结果:

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


   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:181290次
    • 积分:4486
    • 等级:
    • 排名:第6587名
    • 原创:272篇
    • 转载:0篇
    • 译文:0篇
    • 评论:127条
    文章分类
    最新评论