年底了,特贡献一些C#有意思的算法题
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#有意思的算法题的更多相关文章
- C#有意思的算法题
年底了,特贡献一些C#有意思的算法题 2013年,即将要过去了.屌丝C#程序员们拿到了年终奖不?是不是又想蠢蠢欲动了?是不是想通过跳槽来为自己实现加薪的梦想?好吧,跳槽之前还是做点准备吧,准备好C ...
- 记一道有意思的算法题Rotate Image(旋转图像)
题出自https://leetcode.com/problems/rotate-image/ 内容为: You are given an n x n 2D matrix representing an ...
- 有意思的算法题:有10个文件,每个文件大概有10G,求里面最大的100个数;
算法思路 1: 第一个阶段:对于单个10G文件而言 1. 初始化:先取100个数,构建最小堆: 开始比较: 2. 取一个数 A,与最小堆的根节点进行比较: 3. 如果 A > 最小堆根节点,则替 ...
- Luogu 1031 - 均分纸牌 - [有意思的思维题]
题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的 ...
- php 有意思的小题
/** * 你的是一个数字和一个字符串进行比较,PHP会把字符串转换成数字再进行比较.* PHP转换的规则的是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0.***/1)$a =”abc ...
- hdu 2074 叠筐 好有意思的绘图题
叠筐 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- js的一个有意思的小题,闭包解决getElementByTagName的for循环绑定事件错误问题
问: i 会输出什么?改写成闭包的写法? <a href="javaScript:void(0)">a</a> <a href="javaS ...
- 求解最大正方形面积 — leetcode 221. Maximal Square
本来也想像园友一样,写一篇总结告别 2015,或者说告别即将过去的羊年,但是过去一年发生的事情,实在是出乎平常人的想象,也不具有代表性,于是计划在今年 6 月份写一篇 "半年总结" ...
- 打印数组所有排列 python
本人.net一名,最近在看数据结构与算法分析,中间涉及的一些比较有意思的算法题,打算用python实现以下.选择python的原因,就是想熟悉一下python的语法,和pycharm基本的应用. 本篇 ...
随机推荐
- jeasyui datagrid控件的一个小问题
页面上用了datagrid,但今天把easyui更新到1.4.2以后出了个错,Cannot read property 'width' of null,以前用1.3.6的时候没有这个问题. 由于表格中 ...
- HTML5.dcloud.io-stream-app
dcloud.io提出的Stream App 本文仅仅是关于dcloud.io提出的SteamApp初探,所有内容请参考其官网. 1. Application promotion by scaning ...
- libxml2 移植 arm9
准备工作: 1.libxml2软件版本:libxml2-2.6.32.tar.gz 2.交叉编译工具链:arm-none-linux-guneabi 软件安装: 1.设置环境变量: export PA ...
- XE3随笔19:实例 - 借用 Google 实现全文翻译
调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + ...
- Daily Scrum 12.14
今日完成任务: 优化了问题页面显示问题的算法:两名开发人员有CCF考试,今天没有完成任务,任务顺延到明天. 明日任务: 黎柱金 解决资源显示全部为同一个PDF的BUG 晏旭瑞 资源搜索问题 孙思权 做 ...
- 如何辨别具体的一种SaaS是否安全?
如何辨别具体的一种SaaS是否安全,需要把握以下几点: 1.传输协议加密 首先,要看SaaS产品提供使用的协议,是https://还是一般的http://,别小看这个s,这表明所有的数据在传输过程中都 ...
- springAOP实现基于注解的数据源动态切换
需求 代码实现读写数据库分离 武器 spring3.0以上版本 实现思路 1.继承org.springframework.jdbc.datasource.lookup.AbstractRoutingD ...
- flex柱状图
柱状图的展现是通过flex自带的控件实现 控件解析:<mx:ColumnChart id = "columns" dataProvider = "{dataSour ...
- hasOwnProperty和in
返回一个布尔值,指出一个对象是否具有指定名称的属性. hasOwnProperty 此方法无法检查该对象的原型链中是否具有该属in 可以检查原型链中是否具有该属
- 字符串s中从第i个位置起取长度为len的子串,函数返回子串链表
/*已知字符串采用带结点的链式存储结构(详见linksrting.h文件),请编写函数linkstring substring(linkstring s,int i,int len),在字符串s中从第 ...