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: 要插入的字符
* 返回结果: 经过处理后的字符串
**/