C#有意思的算法题
2013-12-28 15:53
309 查看
年底了,特贡献一些C#有意思的算法题
2013年,即将要过去了。屌丝C#程序员们拿到了年终奖不?是不是又想蠢蠢欲动了?是不是想通过跳槽来为自己实现加薪的梦想?好吧,跳槽之前还是做点准备吧,准备好C#的笔试吧。这里我收集了些奉献给大家,大家还有比较有意思的,也可以拿出来,让大家共同学习下。注:部分题目之后会奉上参考答案。
请看题:
1:不允许使用循环语句、条件语句,在控制台中打印出1-200这200个数。
参考答案:这里我使用的是递归。
private static void Print(int number) { Console.WriteLine(number); if (number % 200 != 0) { number = number + 1; Print(number); } }
上面的参考答案用了if,看错了题目,我那个汗呢。。。
补上参考答案:
static void Main(string[] args) { Print(1); Console.Read(); } private static void Print(int number) { try { Console.WriteLine(number); int i = 1/(200 - number); number = number + 1; Print(number); } catch (DivideByZeroException e) { } }
如果题目再限制不能使用递归,那又该如何实现呢?
2:有5个Aspx页面,分别为"Page_1.aspx","Page_10.aspx","Page_100.aspx","Page_11.aspx","Page_111.aspx",请编写代码,让5个Aspx页面按下面的顺序输出:
Page_1.aspx
Page_10.aspx
Page_11.aspx
Page_100.aspx
Page_111.aspx
参考答案:
private static void Order() { var pageList = new[] { "Page_1.aspx", "Page_10.aspx", "Page_100.aspx", "Page_11.aspx", "Page_111.aspx" }; pageList = pageList.OrderBy(s => int.Parse(Regex.Match(s, @"\d+").Value)).ToArray(); Array.ForEach(pageList,Console.WriteLine); }
3:给定一个字符串,试编写代码,实现重复N倍输出字符串的功能。
这个题目要注意的是char在C#中占用的是两个字节。
参考答案:
private static string RepeatString(string str, int repeatCount) { var source = str.ToCharArray(); var dest = new char[source.Length * repeatCount]; for (int i = 0; i < repeatCount; i++) { Buffer.BlockCopy(source, 0, dest, source.Length * i * 2, source.Length * 2); } return new String(dest); }
4:给定一个整形数组,请用16进制的方式显示数组的值。
比方:一个short类型数组:[255,255,255],输出的结果为 00FF 00FF 00FF,如果是byte类型,则输出为 FF FF FF
参考答案
private static void DisplayArrayValues(Array arr) { int elementLength = Buffer.ByteLength(arr) / arr.Length; string formatString = String.Format("{{0:X{0}}} ", 2 * elementLength); for (int ctr = 0; ctr < arr.Length; ctr++) Console.Write(formatString, arr.GetValue(ctr)); Console.WriteLine(); }
5:请自行实现一个函数,该函数的功能是将用户输入的numeric string 转换为integer。
参考答案:
private static int StringToInt(string str) { int result = 0; if (Regex.IsMatch(str, @"^-?[0-9]\d*")) { bool isNegative = false; if (str.IndexOf('-') != -1) { str = str.Substring(1); isNegative = true; } for (int i = 0; i < str.Length; i++) { result = result * 10 + (str[i] - '0'); } result = isNegative ? result * -1 : result; } return result; }
6:给定一个整数num,判断这个整数是否是2的N次方。
7:试编写一副52张扑克牌的洗牌算法。
提示:每次洗牌的时候,给牌一个随机因子。
8:一个牧场目前一共有20头1岁的羊,母羊、公羊各一半。假如母羊5岁时后每年生一胎(母羊,公羊各一半)。羊活到10岁后死亡。请问20年后这个牧场有多少只羊? 请用C#写出算法。
这个题目原题有点蛋疼,我按我的意思,修改了下题目。
相关文章推荐
- 年底了,特贡献一些C#有意思的算法题
- C#实现的18位身份证格式验证算法
- 揽货最短路径解决方案算法 - C# 蚁群优化算法实现
- 18位身份证号验证算法的原理以及C#实现和在管理系统的应用
- c#版点在面内算法
- 贪心算法--C#
- 基于组件的C#农历算法
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
- 一些有意思的算法代码
- 八数码问题的三种算法解答(C#源代码)
- C#实现的18位身份证格式验证算法
- 特别收集一些身份证验证算法的C#版 C#实现的18位身份证格式验证算法
- C#语法灵活运用之排列组合算法
- 暴力算法解益智题(c#2.0版本)
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- Snowflak算法 (C#版本)
- 几个有意思的算法
- C#实现的18位身份证格式验证算法
- C#的加密解密算法,包括Silverlight的MD5算法
- 字符串相似度的算法(sqlserver转和c#)