2013年,即将要过去了。屌丝C#程序员们拿到了年终奖不?是不是又想蠢蠢欲动了?是不是想通过跳槽来为自己实现加薪的梦想?好吧,跳槽之前还是做点准备吧,准备好C#的笔试吧。这里我收集了些奉献给大家,大家还有比较有意思的,也可以拿出来,让大家共同学习下。

注:部分题目之后会奉上参考答案。

请看题:

1:不允许使用循环语句、条件语句,在控制台中打印出1-200这200个数。

参考答案:这里我使用的是递归。

private static void Print(int number)
{
Console.WriteLine(number);
if (number % != )
{
number = number + ;
Print(number);
}
}

上面的参考答案用了if,看错了题目,我那个汗呢。。。

补上参考答案:

 static void Main(string[] args)
{
Print();
Console.Read();
} private static void Print(int number)
{
try
{
Console.WriteLine(number);
int i = /( - number);
number = number + ;
Print(number);
}
catch (DivideByZeroException e)
{
}
}

根据大家的讨论,比较好的答案:

 private static bool Print(int number)
{
Console.WriteLine(number);
return number >= || Print(number + );
}

如果题目再限制不能使用递归,那又该如何实现呢?

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 = ; i < repeatCount; i++)
{
Buffer.BlockCopy(source, , dest, source.Length * i * , source.Length * );
}
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}}} ", * elementLength);
for (int ctr = ; ctr < arr.Length; ctr++)
Console.Write(formatString, arr.GetValue(ctr));
Console.WriteLine();
}

5:请自行实现一个函数,该函数的功能是将用户输入的numeric string 转换为integer。

参考答案:

private static int StringToInt(string str)
{
int result = ;
if (Regex.IsMatch(str, @"^-?[0-9]\d*"))
{
bool isNegative = false;
if (str.IndexOf('-') != -)
{
str = str.Substring();
isNegative = true;
}
for (int i = ; i < str.Length; i++)
{
result = result * + (str[i] - '');
}
result = isNegative ? result * - : result;
}
return result;
}

6:给定一个整数num,判断这个整数是否是2的N次方。

参考答案:

private static bool GetFlag(int num)
{
if (num < ) return false;
return (num & num - ) == ;
}

7:试编写一副52张扑克牌的洗牌算法。

提示:每次洗牌的时候,给牌一个随机因子。

 private static void Shuffle()
{
var random = new Random();
var result = new List<string>();
string[] cardType = { "红桃", "黑桃", "方块", "梅花" };
string[] cardValue = { "A", "", "", "", "", "", "", "", "", "", "J", "Q", "K" };
foreach (string type in cardType)
{
var list = cardValue.Select(value => string.Format("{0}{1}", type, value));
result.AddRange(list);
}
result = (from c in result orderby random.Next(, ) descending select c).ToList();
result.ForEach(str => Console.Write("{0},", str));
}

8:一个牧场目前一共有20头刚出生的羊,母羊、公羊各一半。假如母羊5岁时后每年生一胎(母羊,公羊各一半)。羊活到10岁后死亡。请问20年后这个牧场有多少只羊? 请用C#写出算法。

这个题目原题有点蛋疼,我按我的意思,修改了下题目。

给出参考答案:

假如一胎生一只公羊和一只母羊。

static void Main(string[] args)
{
int sheepCount;
for (int i = ; i <= ; i++)
{
sheepCount = GetSheepCount(i) - GetDeathSheepCount(i);
Console.WriteLine(sheepCount);
}
}
 private static int GetSheepCount(int year)
{
if (year <= )
return ;
return GetSheepCount(year - ) + GetSheepCount(year - ) - GetDeathSheepCount(year);
} private static int GetDeathSheepCount(int year)
{
if (year < )
return ;
return GetSheepCount(year - );
}

年底了,特贡献一些C#有意思的算法题的更多相关文章

  1. C#有意思的算法题

    年底了,特贡献一些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. Luogu 1031 - 均分纸牌 - [有意思的思维题]

    题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的 ...

  5. php 有意思的小题

    /** * 你的是一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较.* PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0.***/1)$a =”abc ...

  6. hdu 2074 叠筐 好有意思的绘图题

    叠筐 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  7. js的一个有意思的小题,闭包解决getElementByTagName的for循环绑定事件错误问题

    问: i 会输出什么?改写成闭包的写法? <a href="javaScript:void(0)">a</a> <a href="javaS ...

  8. 求解最大正方形面积 — leetcode 221. Maximal Square

    本来也想像园友一样,写一篇总结告别 2015,或者说告别即将过去的羊年,但是过去一年发生的事情,实在是出乎平常人的想象,也不具有代表性,于是计划在今年 6 月份写一篇 "半年总结" ...

  9. 打印数组所有排列 python

    本人.net一名,最近在看数据结构与算法分析,中间涉及的一些比较有意思的算法题,打算用python实现以下.选择python的原因,就是想熟悉一下python的语法,和pycharm基本的应用. 本篇 ...

随机推荐

  1. Spring ioc容器

    一.ioc容器 ioc (inversion of  control)即控制反转,把某一个接口选择实现类的控制权转移给Spring容器来管理.调用类对该实现类的依赖关系由ioc容器注入(DI),传统的 ...

  2. poj -- 1042 Gone Fishing(枚举+贪心)

    题意: John现有h个小时的空闲时间,他打算去钓鱼.钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(John每在一个湖钓完鱼后,他只能走到下一个湖继续钓),John必须从1号湖开始钓起,但是他 ...

  3. jQuery系列之操作select标签

    每次看完东西基本就忘了,现在决定写一下博客来记录,不知道效果咋样. 一.jQuery操作选择器 1.基本选择器 关于基本选择器,我就不用太多说了,包括了ID.类.标签等选择器. 2.层次选择器 我觉得 ...

  4. 基类用的this指针

    结论:基类构造函数中的this指针指向的是派生类的对象 测试代码: #include <iostream> using namespace std; class father; fathe ...

  5. 关于读取txt文件中文乱码问题

    在处理文件的过程中,读取txt文件出现中文乱码.这种情况是由于编码字符不一致导致. public static string ReadFile(string path, string fileName ...

  6. vim 查看文件二进制格式

    用vim打开文件,vim -b file,选项-b是二进制模式打开   然后输入 :%!xxd,就可看到二进制编码     其实在linux下,直接输入xxd file 也是可以看到的文件二进制格式的

  7. IOS 数据库

    系统自带可以储存字段的字典: NSUserDefaults *user = [[NSUserDefaults alloc] init]; 存 : [user setObject:@"YES& ...

  8. 纯jsp用户登录系统

    用纯jsp技术实现用户登录系统,需要用到三个.jsp文件.在文本目录下新建三个.jsp文件,分别命名为login.jsp,logincl.jsp和wel.jsp. 1.login.jsp文件用来放界面 ...

  9. openSUSE 配置静态上网

    openSUSE静态固定IP设置方法 openSUSE号称最华丽的Linux,只是中文资料实在太少,这里提供在VMmware Workstation 7.12中安装openSUSE 11.3设置静态固 ...

  10. Bootstrap 折叠(Collapse)插件

    折叠(Collapse)插件可以很容易地让页面区域折叠起来.无论您用它来创建折叠导航还是内容面板,它都允许很多内容选项. 如果您想要单独引用该插件的功能,那么您需要引用 collapse.js.同时, ...