您的位置:首页 > 其它

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

2013-04-30 13:52 393 查看
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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐