//54五名学生参加了两门课程的考试,试输入成绩,统计出各科的最高分,最低分,平均分及每个学生的平均成绩(要求用对话框显示成绩统计结果)
using System;
using System.Windows.Forms;
class Program
{
    static void Main()
    {
        const int N = 5;
        int[,] score = new int[N, 2];//score二维数组
        float[] ang = new float[N];//ang二维数组
        input(score);//输入函数
        avgAll(score, ang);//
        Console.WriteLine("\t课程1\t课程2\t平均分:");
        Console.WriteLine(showScore(score, ang));
        Console.WriteLine( );
        int x1, x2;
        minmum(score, out x1, out x2);
        Console.WriteLine("\n最低分:  " + x1 + "\t" + x2);
        maxmum(score, out x1, out x2);
        Console.WriteLine("\n最高分:  " + x1 + "\t" + x2);
        float a1, a2;
        average(score, out a1, out a2);
        Console.WriteLine("\n平均分:  " + a1 + "\t" + a2);
    }
    static void input(int[ , ] score)
    {
        string str;
        int n = 0;
        Console.WriteLine("请输入每个学生的各科成绩\n");
        for(int i=0;i<score.GetLength(0);i++)
        {
            for (int j = 0; j < score.GetLength(1); j++)
            {
                do
                {
                    Console.Write("学生{0}课程{1}成绩\n", i + 1, j + 1);
                    str = Console.ReadLine();
                    if (str == " ")
                        continue;
                    try
                    {
                        n = int.Parse(str);
                    }
                    catch//检查异常
                    {
                        Console.WriteLine("只能输入数字型数据");
                        Application.Exit();
                    }
                } while (n < 0 || n > 100);
                score[i,j]=n;
            }
                
        }
    }
static string showScore(int[ , ]score,float[ ]ang)//使用avgAll()函数
{
    string str = " ";
    for (int i = 0; i < score.GetLength(0); i++)
    {
        str += "\n学生" + (i + 1) + ":    ";
        str += score[i, 0] + "\t" + score[i, 1] + "\t" + ang[i];
    }
    return str;
}
static void minmum(int[,] score, out int x1, out int x2)
{
    int an = score.GetLength(0);
    x1 = score[0, 0];
    x2 = score[0, 1];
    for (int i = 1; i < an; i++)
        if (score[i, 0] < x1)
            x1 = score[i, 0];
    for (int i = 1; i < an; i++)
    {
        if (score[i, 1] < x2)
            x2 = score[i, 1];
    }
}
static void maxmum(int[,] score, out int x1, out int x2)
{
    int an = score.GetLength(0);
    x1 = score[0, 0];
    x2 = score[0, 1];
    for (int i = 1; i < an; i++)
        if (score[i, 0] > x1)
            x1 = score[i, 0];
    for (int i = 1; i < an; i++)
        if (score[i, 1] > x2)
            x2 = score[i, 1];
}
static void average(int[,] score, out float a1, out float a2)
{
    int sum1 = 0, sum2 = 0;
    int an = score.GetLength(0);
    for (int i = 0; i < an; i++)
        sum1 += score[i, 0];
    for (int i = 0; i < an; i++)
        sum2 += score[i, 1];
    a1 = sum1 * 1.0f / an;
    a2 = sum2 * 1.0f / an;
}
static void avgAll(int[,] score, float[] ang)//avgAll()函数
{
    int nj = score.GetLength(1);
    for(int i=0;i<score.GetLength(0);i++)
    {
        int sum = 0;
        for (int j = 0; j < nj; j++)
            sum += score[i, j];
        ang[i] = sum * 1.0f / nj;
    }
}
}

<C#任务导引教程>练习六的更多相关文章

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler

    上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK ...

  2. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  3. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  4. HMM 自学教程(六)维特比算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  5. Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据

    本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了.今天重新来写这篇文章.今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式. 作者:依乐祝 原 ...

  6. [转]PostgreSQL教程(十六):系统视图详解

    这篇文章主要介绍了PostgreSQL教程(十六):系统视图详解,本文讲解了pg_tables.pg_indexes.pg_views.pg_user.pg_roles.pg_rules.pg_set ...

  7. iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面

    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main. ...

  8. Netty4.x中文教程系列(六) 从头开始Bootstrap

    Netty4.x中文教程系列(六) 从头开始Bootstrap 其实自从中文教程系列(五)一直不知道自己到底想些什么.加上忙着工作上出现了一些问题.本来想就这么放弃维护了.没想到有朋友和我说百度搜索推 ...

  9. Photoshop入门教程(六):通道

    学习心得:当大部分人听到通道.心里可能会有一种很害怕的感觉,因为“通道”并不像“图层”这样易于理解,望而生畏.”通道“的本质其实是存储图片的信息,把一张图片比作一个为网站,那么通道就是网站的后台,存储 ...

随机推荐

  1. efcore分表分库原理解析

    ShardingCore ShardingCore 易用.简单.高性能.普适性,是一款扩展针对efcore生态下的分表分库的扩展解决方案,支持efcore2+的所有版本,支持efcore2+的所有数据 ...

  2. 从单体迈向 Serverless 的避坑指南

    作者 | 不瞋 导读:用户需求和云的发展两条线推动了云原生技术的兴起.发展和大规模应用.本文将主要讨论什么是云原生应用,构成云原生应用的要素是什么,什么是 Serverless 计算,以及 Serve ...

  3. mybatis 操作数据库(05)

    类型转换.动态排序,查询接口与mapper对应关系说明及其注意事项 一.MyBatis 自带写常见类型转换器.例如:java 类中 String 对应 mySQL中的varchar 二.自定义类型转换 ...

  4. Tomcat实现自定义类加载器

    什么是类加载器? 这是官方给的定义 在 Java 虚拟机的实现中,初始类可以作为命令行参数提供. 或者,该实现可以提供一个初始类,该类设置一个类加载器,该类加载器依次加载应用程序. 初始类的其他选择也 ...

  5. 讲讲java中线程池的实现

    今天跟一个同学谈到java中的线程池的实现,才发现有些知识点已经记不清了,所以特意把源码打开,对官方文档做了些说明. 其实这些理解了之后,读懂源码应该是没多大问题了,有感兴趣的小伙伴们可以看完说明后自 ...

  6. 【c++ Prime 学习笔记】第1章 开始

    1.1 编写一个简单的程序 int main() { return 0; } 函数 包含4部分: 返回类型(return type) 函数名(function name) 形参列表(parameter ...

  7. 学了ES6,还不会Promise的链式调用?🧐

    前言 本文主要讲解promise的链式调用的方法及其最终方案 应用场景 假如开发有个需求是先要请求到第一个数据,然后根据第一个数据再去请求第二个数据,再根据第二个数据去请求第三个数据...一直到最后得 ...

  8. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  9. 《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何自动化测试,这一篇宏哥在网上找了一个问卷调查,给小伙伴或童鞋们来演示一下.上 ...

  10. Codeforces Round #741 (Div. 2)部分题题解

    我果然还是太菜了,就写了两道题....真是水死了.... A The Miracle and the Sleeper 简化题意:给定\(l,r\),求\(a\)%\(b\)的最大值,其中\(r> ...