您的位置:首页 > 编程语言 > C#

C#上机 第九周 任务2 从题库中随机抽题

2012-10-29 17:10 253 查看
/*
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:从题库中随机抽题
* 作    者:薛广晨
* 完成日期:2012  年 10 月  29  日
* 版 本号:x1.0

* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述: 假定已经获取题库中的试题号,并存放在数组arrayKT中。
*           例如, int [] arrayKT={10,13,18,19,20,22,30,31...}。
*           定义一个静态成员方法,该方法实现从上述数组中随机抽出给定数量(n,1<=n<=arrayKT.Length)的考题,并组成一个考题字符串。
*           比如,随机从arrayKT中抽取5题组成考题字符串:“10,18,20,22,30”。
*           要求,组成考题字符串中考题不重复,且一定在数组中存在。自行设计程序验证上述方法正确性。
public static string getKTH(int n,params int [] arrayKT)
{
//提示:主体中使用random类
}

* 程序输出:
* 程序头部的注释结束
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
int[] arrayKT = { 10, 13, 18, 19, 20, 22, 30, 31, 32, 35, 41, 46 };
string str = getKTH(5, arrayKT);
Console.WriteLine("考题为:{0}", str);
Console.ReadKey();
}

public static string getKTH(int n, params int[] arrayKT)
{
if(n > arrayKT.Length)
{
Console.WriteLine("超出题库的总题目数目!");
return "";
}

string str = "";
int[] index = new int[arrayKT.Length];
for (int i = 0; i < arrayKT.Length; i++)
index[i] = arrayKT[i];
Random rd = new Random();
//用来保存随机生成的不重复的10个数
int[] result = new int
;
int site = arrayKT.Length;//设置下限
int id;
for (int j = 0; j < n; j++)
{
id = rd.Next(site - 1);
//在随机位置取出一个数,保存到结果数组
result[j] = index[id];
//最后一个数复制到当前位置
index[id] = index[site - 1];
//位置的下限减少一
site--;
}

for (int i = 0; i < n; i++)
{
str += result[i].ToString();
if (i < n - 1)
{
str += ", ";
}
}
return str;
}
}
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: