假定已经获取题库中的试题号抽取n题组成考题字符串

来源:互联网 发布:域名价格排行榜 编辑:程序博客网 时间:2024/06/02 02:50

问题及代码:

/*    * Copyright (c) 2016, 烟台大学计算机与控制工程学院    * All rights reserved.    * 文件名称:kt.cpp                          * 作    者:单昕昕                                * 完成日期:2016年3月19日    * 版 本 号:v1.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;//哈希表必用头文件using System.Text;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            int [] arrayKT=new int [100];            Random rd = new Random();//Random类,用来产生随机数            Hashtable ht = new Hashtable();//哈希表,这里用来判断是否有重复的数字            int cnt = 0;//计数            for (int i = 0; i < 1000; ++i)//多次循环来保证找到100个不重复的数字            {                int temp=rd.Next(1,101);//temp中间变量存储当前产生的随机数                if (!ht.Contains(temp))//如果哈希表中不存在当前随机数                {                    ht.Add(temp, temp);//添加到哈希表中                    arrayKT[cnt] = temp;//添加到题目序号数组中                    ++cnt;//题目序号数组计数加一                    if (cnt == 100)                        break;                }            }            //for (int i = 0; i < arrayKT.Length;++i )//测试用                //Console.WriteLine(arrayKT[i]+"*"+i);            Console.Write("n=");            int n = int.Parse(Console.ReadLine());//输入n,表示要取出的考题数目            Console.WriteLine("考题:"+getKTH(n, arrayKT));            Console.ReadKey();        }        public static string getKTH(int n, params int[] arrayKT)//params实现方法形参个数可变        {            StringBuilder kt = new StringBuilder();//题目序号字符串            for (int i = 0; i < n-1; ++i)            {                kt.Append(arrayKT[i].ToString() + ",");//向StringBuilder实例尾端追加字符串            }             kt.Append(arrayKT[n-1].ToString());//为了保证输出格式,末尾一个数字后面没有逗号        return kt.ToString();//返回新生成的题目序号字符串        }    }}

运行结果:



其实其他的都很简单,就是还要写个哈希表判断有木有重复的~~

1 0
原创粉丝点击