* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 作 者: 刘镇
* 完成日期: 2012 年 10 月 27 日
* 版 本 号: 3.013
* 对任务及求解方法的描述部分
* 问题描述:假定已经获取题库中的试题号,并存放在数组arrayKT中,方法实现从上述数组中随机抽出给定数量(n,1<=n<=arrayKT.Length)的考题,并组成一个考题字符串。
*代码部分:
TestString.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyTestString
{
class TestString
{
public static string getKTH(int n, int[] arrayKT)
{
Random random = new Random();
int num = 0;
string resultStr = "";
if(n > arrayKT.Length)
{
Console.WriteLine("超出题库的总题目数目!");
return "";
}
for (int i = 0; i < n; i++)
{
while(true)
{
num = random.Next(arrayKT.Length);
if (arrayKT[num] != 0)
{
break;
}
}
resultStr = resultStr.Insert(resultStr.Length, arrayKT[num].ToString());
if (i != n - 1)
{
resultStr = resultStr.Insert(resultStr.Length, ",");
}
arrayKT[num] = 0;
}
return resultStr;
}
}
}
测试类(Program.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyTestString
{
class Program
{
static void Main(string[] args)
{
int [] arrayKT = {10, 13, 18, 19, 20, 22, 30, 31, 39, 40, 44, 45, 41, 50};
string result = TestString.getKTH(14, arrayKT);
Console.WriteLine("题库中的试题号: " + result);
Console.ReadKey();
}
}
}
测试结果:
心得经验:
这个问题有几个主要点:1、超出总题目数的情况;2、随机数类:最大数的限制是传入的数组的长度;3、组成考题字符串中考题不重复:通过将已经取出的随机数的数组赋值为0;从而实现字符串不重复。4、在字符串中添加新字符串,用到了Insert(),但是一定要记住字符串的Insert()是生成新字符串而不是在就字符串上处理。