年底了,特贡献一些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# 编码面试题

C#有意思的算法题的更多相关文章

  1. 年底了,特贡献一些C#有意思的算法题

    2013年,即将要过去了.屌丝C#程序员们拿到了年终奖不?是不是又想蠢蠢欲动了?是不是想通过跳槽来为自己实现加薪的梦想?好吧,跳槽之前还是做点准备吧,准备好C#的笔试吧.这里我收集了些奉献给大家,大家 ...

  2. 记一道有意思的算法题Rotate Image(旋转图像)

    题出自https://leetcode.com/problems/rotate-image/ 内容为: You are given an n x n 2D matrix representing an ...

  3. 有意思的算法题:有10个文件,每个文件大概有10G,求里面最大的100个数;

    算法思路 1: 第一个阶段:对于单个10G文件而言 1. 初始化:先取100个数,构建最小堆: 开始比较: 2. 取一个数 A,与最小堆的根节点进行比较: 3. 如果 A > 最小堆根节点,则替 ...

  4. 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。

    简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...

  5. 经典算法题每日演练——第十六题 Kruskal算法

    原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...

  6. 经典算法题每日演练——第八题 AC自动机

    原文:经典算法题每日演练--第八题 AC自动机 上一篇我们说了单模式匹配算法KMP,现在我们有需求了,我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题. 当然你也可以用KMP算法求出,那 ...

  7. leetcode算法题(JavaScript实现)

    题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...

  8. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

  9. Codeforce算法题 | 你能想出解法,让你的基友少氪金吗?

    在TechFlow学长的公众号里发现一道挺有意思的CF算法题,现在利用学长的思路学习一下 题目链接:https://codeforces.com/contest/1418/problem/C 题意 这 ...

随机推荐

  1. dapper的Dapper-Extensions用法(一)

    dapper的Dapper-Extensions用法(一) Dapper-Extensions Dapper Extensions is a small library that complement ...

  2. hdu1297 Children’s Queue

    再加上男人:dp[i-1]: 加2一个女人:dp[i-2]+x. 上述的另一种情况下dp[i-2]它不仅包括加2女人对法律状况.和x是一个加号ff原违法的法律案后加入,这最后是mf案例,然后,x=dp ...

  3. docker study

    Author:Hyphen 同步公布在个人博客中:http://yanheven.github.io/docker-study/ 參考章宇兄的开源项目学习ABC的方法来对docker进行简单的学习与分 ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)    ...

  5. MVC4的过滤器

    过滤器 提供的四种基本类型过滤器接口,IAuthorizationFilter.IActionFilter.IResultFilter和IExceptionFilter,可通过继承对应的接口和Filt ...

  6. crawler_java_数据平台结构

    大数据生态架构

  7. 使用php-fpm状态页观察当前的php-fpm状态

    对于php-fpm的參数设置,非常多情况下有这种疑问,就是内置的几个參数比如pm.max_children,pm.start_servers等这几个參数究竟该设置最多为多少才合适.事实上这几个參数往往 ...

  8. 【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物

    原文:[高德地图API]从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 摘要:覆盖物,是一张地图的灵魂.有覆盖物的地图,才是完整的地图.在 ...

  9. TRIZ系列-创新原理-28-替代机械系统原理

    替代机械系统原理的详细描写叙述例如以下:1)用光.声.热.嗅觉系统替代机械系统:2)用电.磁或电磁场来与物体交互作用:3)用移动场替代精巧场,用随时间变化的场替代固定场,用结构化的场替代随机场:4)使 ...

  10. c# 官方命名规则

    官方的哦. https://msdn.microsoft.com/zh-cn/library/vstudio/ff926074(v=vs.110).aspx