班级学生总成绩和平均成绩计算

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test9
{
    class Program
    {
        //  班级学生总成绩和平均成绩计算:

        //1)让用户输入班级人数

        //2)让用户依次输入该班级每个学员的姓名和成绩(0-100之间)

        //3)按成绩进行排序,按成绩由高到低依次输出学生的姓名和成绩


        static void Main(string[] args)
        {
            //提示用户输入
            Console.WriteLine("请输入班级人数:");
            //定义接收总人数变量
            int Zong = 0;
            //变量,控制输入正确后下一步
            bool b = true;
            while (b)
            {
                //判断输入是否正确,错误抛出异常
                try
                {
                    Zong = Convert.ToInt32(Console.ReadLine());
                    b = false;
                }
                catch (Exception)
                {
                    //出现异常提示重新输入
                    Console.WriteLine("输入错误!重新输入");
                    b = true;
                }
            }
            //定义存放成绩的数组Nums和存放名字的数组Names
            string[] Names = new string[Zong];
            int[] Nums = new int[Zong];
            //循环让用户依次输入该班级每个学员的姓名和成绩
            for (int i = 0; i < Zong; i++)
            {
                Console.WriteLine("请输入第{0}个人的姓名:", i + 1);
                Names[i] = Console.ReadLine();
                Console.WriteLine("请输入{0}的分数:", Names[i]);
                string N = Console.ReadLine();
                //对成绩进行处理
                Nums[i] = TryNum(N);

            }
            //对成绩进行排序
            Nums = PaiXu(Nums,ref Names);
            //循环输出排序好的数组
            for (int i = 0; i < Nums.Length; i++)
            {
                Console.WriteLine("第{0}名是:{1},分数:{2}",i+1,Names[i],Nums[i]);
            }
            Console.ReadKey();
        }
        /// <summary>
        /// 处理用户输入的成绩
        /// </summary>
        /// <param name="n">用户输入数据</param>
        /// <returns>返回正确值</returns>
        static int TryNum(string n)
        {
            int Num = 0;
            //处理用户的输入
            try
            {
                //转换,出错进入异常。正确继续
                Num = Convert.ToInt32(n);
                //判断数字是否大于0小于100
                if (0 > Num || Num > 100)
                {
                    //大于0小于100抛出错误
                    throw new Exception("大于0小于100");

                }
            }
            catch (Exception e)
            {
                //异常提示
                Console.WriteLine("输入错误请重新输入:"+e);
                //递归,继续执行
                TryNum(Console.ReadLine());

            }
            return Num;

        }
        /// <summary>
        /// 冒泡排序
        /// </summary>
        /// <param name="array">分数数组</param>
        /// <param name="names">姓名数组</param>
        /// <returns>排序后的数组</returns>
        static int[] PaiXu(int[] array,ref string[] names)
        {
            int length = array.Length - 1;
            bool isExchanged = false;
            for (int i = 0; i < length; i++)
            {
                isExchanged = false;
                for (int j = length; j > i; j--)
                {
                    if (array[j] > array[j - 1])
                    {
                        int temp = array[j];
                        array[j] = array[j - 1];
                        array[j - 1] = temp;
                        string t = names[j];
                        names[j] = names[j - 1];
                        names[j - 1] = t;
                        isExchanged = true;
                    }
                }
                if (!isExchanged)//一遍比较过后如果没有进行交换则退出循环
                    break;
            }
            return array;
        }
    }
}

 

转载于:https://www.cnblogs.com/yliang/archive/2013/04/30/3051846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 请写1个支付宝接龙红包程序. 随机产生1-100的随机数,作为红包金额. 让用户不断的去猜,直到猜正确为止.最后发给用户的红包金额是 红包金额/猜得次数. 2. 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 3. 实现要求用户一直输入QQ号码和密码,只要不是123456、888888就一直提示要求重新输入,如果正确则提登录成功. 4. 1-100之间不能够被7整除的数的和. 5. 求1-200之间的所有的整数的累加和 6. 求1-100之间6的倍数的个数 7. 输入班级人数,然后依次输入学员成绩计算班级学员的平均成绩总成绩 8. 2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*** 9. 从键盘输入10个数,求出最大数 10. 1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5)), 并统计满足条件的整数有多少个。 11. 求1-100中 是7的倍数 的数值之和 12. 求1-1000之间的所有的奇数之和 13.猜数字游戏. 随机产生1个1-100之间的数 让用户猜 当用户输入的数比产生的随机数大 就输出 猜大了 并让用户继续输入新的数.。 当用户输入的比产生的随机数小的时候 就输出 猜小了 并且继续猜 当用户刚好输入的就是这个随机数的时候 提示成功 并显示用户猜了多少次. 14. 老师问学生,这道题你会做了吗? 如果学生答"会了(y)",则可以放学. 如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学. 直到学生会或老师给他讲了10遍还不会,都要放学 15. 写1个程序. 随机的产生1个2位数的加法运算.让用户输入这个运算的结果 然后判断这个结果是否正确. 来10次. 每个人默认有10分. 产生10个加法运算.操作数的范围在0-100之间. 每产生1个加法运算 就让用户输入结果.判断是否正确. 当回答正确的时候就为用户加1分. 错误的时候就扣1分. 当10道题目回答完毕之后 就显示用户得的分数. ***

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值