集合与泛型典型例题

1、数制转换问题。数制转换问题是将任意一个非负的十进制数转换为其它进制的数,这是计算机实现计算的基本问题。其一般的解决方法的利用辗转相除法。以将一个十进制数N转换为八进制数为例进行说明。假设N=5142,示例图:

N   N/8(整除)  N%8(求余)      低

5142   642 6

642 80 2

80 10 0

10 1 2

1 0 1 高

从图可知,(5142)10=(12026)8。编写一个控制台程序,实现十进制数转换成八进制数

(提示:转换得到的八进制数各个数位是按从低位到高位的顺序产生的,而转换结果的输出通常是按照从高位到低位的顺序依次输出。也就是说,输出的顺序与产生的顺序正好相反,这与栈的操作原则相符。所以,在转换过程中可以使用一个栈,每得到一位八进制数将其入栈,转换完毕之后再依次出栈。)

 答案:  Console.WriteLine("输入十进制数字:");

            string  s = Console.ReadLine();

            int n = Convert.ToInt32(s);

            Stack st = new Stack();

            int temp;

            for (int i = 0; i < s.Length; i++)

            {

                if (n /8 != 0)

                {

                    temp = n%8;

                    st.Push(temp);

                }

                

                n = n / 8;

            }

            st.Push(1);

            Console.WriteLine("转化为八进制为:");

            foreach (var item in st)

            {

                Console.Write(item);

            }

            Console.ReadKey();

2、编写一个控制台程序,控制台输入的数组字符串(如:"123"转换为中文大写(如:壹贰叁)。(要求使用Dictonary<T>)

答案:  Console.WriteLine("输入字符串");

            string s = Console.ReadLine();

            Dictionary<string, string> di = new Dictionary<string, string>();

            string  temp;

            di.Add("0", "零?");

            di.Add("1", "壹?");

            di.Add("2", "贰?");

            di.Add("3", "叁╰");

            di.Add("4", "肆á");

            di.Add("5", "伍é");

            di.Add("6", "陆?");

            di.Add("7", "柒a");

            di.Add("8", "仈?");

            di.Add("9", "九?");

            Console.WriteLine("转化为汉字形式:");

            for (int i = 0; i < s.Length; i++)

            {

                temp = s.Substring(i, 1);

                Console.Write(di[temp]);

               

            }

         

            Console.ReadKey();

 

3、编写一个控制台程序,实现List<T>的添加、插入、删除查找、排序等功能。

 List<int> li = new List<int>();

            li.Add(1);

            li.Add(2);

            li.Add(9);

            li.Add(6);

            li.Add(3);

            li.Add(7);    //添�?加ó

            foreach (var item in li)

        {

                Console.WriteLine(item);

        }

            Console.WriteLine("********");

            li.Insert(1, 8);  //插?入?

            foreach (var item in li)

            {

                Console.WriteLine(item);

            }

            Console.WriteLine("********");

            li.Remove(8);   //移?除y

            foreach (var item in li)

            {

                Console.WriteLine(item);

            }

            Console.WriteLine("********");

            li.Sort();  //排?序ò

            foreach (var item in li)

            {

                Console.WriteLine(item);

            }

            Console.WriteLine("********");

            

             

            Console.ReadKey();

拓展软件设计大赛题目

文字祖玛游戏需求如下:

1).程序通过控制台输出一个字符串,由ABCDE五个字母组成,例如:ACBEEBBAD

2).用户输入一个字符,只能是ABCDE其中之一,然后再输入一个要插入的位置。

3).程序会将这个字符插入到字符串的指定位置前(第一个字符位置为0,第二个字符位置为1,依此类推),然后消除连续出现的三个相同的字符,直到没有连续三个相同的字符为止。

例如:

控制台输出:ACBEEBBAD

用户输入:E, 3

控制台输出:ACAD

以上示例表示:在位置3插入E后,结果是:ACBEEEBBAD,消除连续的三个E,结果是:ACBBBAD再次消除连续三个B,结果是:ACAD

要求如下:

A.为实现此游戏,需要设计一个方法DealString()

/**

* 参数:

* str: 原始字符串

* index: 要插入字符的位置

* letter: 要插入的字符

* 返回结果: 经过处理后的字符串

**/

答案:

class Program
{

static string DealString(string st,string let,int m)
{
string temp = st.Insert(m, let);
for (int i = 0; i < temp.Length - 2; i++)
{
if (temp[i] == temp[i + 1])
{
if (temp[i + 1] == temp[i + 2])
{
temp = temp.Remove(i, 3);
i = 0;
}

}

}

return temp;
}
static void Main(string[] args)
{


string str = "ACBEEBBAD";
Console.WriteLine("原字符串"+str);
Console.WriteLine("输入插入字符和插入的位置");
string letter = Console.ReadLine();
string i = Console.ReadLine();
int index = Convert.ToInt32(i);
Console.WriteLine("新的字符串");
string result = DealString(str,letter,index);
Console.WriteLine(result);


Console.ReadKey();
}
}
}

原文地址:https://www.cnblogs.com/sunxiaoyan/p/8287455.html