集合與泛型典型例題
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).程序通過控制臺輸出一個字符串,由A、B、C、D、E五個字母組成,例如:ACBEEBBAD。
2).用戶輸入一個字符,只能是A、B、C、D、E其中之一,然後再輸入一個要插入的位置。
3).程序會將這個字符插入到字符串的指定位置前(第一個字符位置為0,第二個字符位置為1,依此類推),然後消除連續出現的三個相同的字符,直到沒有連續三個相同的字符為止。
例如:
控制臺輸出:ACBEEBBAD
用戶輸入:E, 3
控制臺輸出:ACAD
以上示例表示:在位置3插入E後,結果是:ACBEEEBBAD,消除連續的三個E,結果是:ACBBBAD再次消除連續三個B,結果是:ACAD。
要求如下:
A.為實現此遊戲,需要設計一個方法DealString()
/**
* 參數:
* str: 原始字符串
* index: 要插入字符的位置
* letter: 要插入的字符
* 返回結果: 經過處理後的字符串
**/
集合與泛型典型例題