.net 面试题求解

haojia133086 2014-08-14 01:45:46
判断彩票是否中奖
输入一组数字(7位),判断这组数字中几等奖,判断规则如下
一等奖:中7个数;二等奖:中6个数
三等奖:中5个数;四等奖:中4个数;五等奖:中3个数
其它的没有中奖
最终打印出中几等奖,如中一等奖打印“一等奖”,没有中奖打印“没有中奖”
注:中奖号码为已知,可以自定义一组整型数组,如:
int [] luck = new int[7];
luck[0] = 0;luck[1] = 1;luck[2] = 2;luck[3] = 3;luck[4] = 4;luck[5] = 5;luck[6] = 6;
...全文
232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojia133086 2014-08-14
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
最简单的办法,2个数组遍历比较 高大上的办法,用LINQ获取两个数组的交集
想想其实就是集合的交运算 int[] luck = { 0, 1, 2, 3, 4, 5, 6 }; //中奖号码 int[] user = { 2, 2, 5, 4, 8, 0, 4 }; //用户买入号码 var aaa = luck.Intersect(user).Count();
threenewbee 2014-08-14
  • 打赏
  • 举报
回复
如果不要求位置相同,比如 1234567和7654321也算押对7个数字(这规则比较奇怪)那么可以用join string luck = "1234567"; string younumber = "1231231"; int 有几个数字相符 = luck.Join(younumber, x=> x, x => x, (x, y) => 1).Sum();
程序员-阿勇 2014-08-14
  • 打赏
  • 举报
回复
5楼代码主要有用的地方在
List<int> endlist = list.Where(l => userlist.Contains(l)).ToList();
其他的都是废物代码 没测试过的 应该没问题
程序员-阿勇 2014-08-14
  • 打赏
  • 举报
回复
对了 我楼上的答复没写重复判断
程序员-阿勇 2014-08-14
  • 打赏
  • 举报
回复
static void Main(string[] args)
        {
            List<int> list = new List<int>();
            list.Add(0);
            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);
            list.Add(6);

            List<int> userlist = new List<int>();
            Console.WriteLine("请输入第一个号码:");
            try
            {
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第二个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第三个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第四个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第五个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第六个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
                Console.WriteLine("请输入第七个号码:");
                userlist.Add(Convert.ToInt32(Console.ReadLine()));
            }
            catch { Console.WriteLine("请输入数字"); }
            List<int> endlist = list.Where(l => userlist.Contains(l)).ToList();
            if (endlist.Count == 7)
                Console.WriteLine("一等奖");
            if (endlist.Count == 6)
                Console.WriteLine("2等奖");
            if (endlist.Count == 5)
                Console.WriteLine("3等奖");
            if (endlist.Count == 4)
                Console.WriteLine("4等奖");
            if (endlist.Count == 3)
                Console.WriteLine("5等奖");}
haojia133086 2014-08-14
  • 打赏
  • 举报
回复
2楼正解 牛
haojia133086 2014-08-14
  • 打赏
  • 举报
回复
class Program { static void Main(string[] args) { int[] luck = { 0, 1, 2, 3, 4, 5, 6 }; //中奖号码 int[] user = { 2, 2, 5, 4, 8, 0, 4 }; //用户买入号码 System.Console.WriteLine(Caipiao(luck, user)); System.Console.ReadLine(); } private static string Caipiao(int[] luck, int[] user) { int temp = 0; foreach (int number in luck) { if (user.Contains(number)) { temp++; } } string result = string.Empty; switch (temp) { case 7: result = "一等奖"; break; case 6: result = "二等奖"; break; case 5: result = "三等奖"; break; case 4: result = "四等奖"; break; case 3: result = "五等奖"; break; default : result = "没有中奖"; break; } return result; } }
xdashewan 2014-08-14
  • 打赏
  • 举报
回复
这题目里有坑吧,他并没告诉你号码不能重复,所以遍历前首先得知道,中奖号码有几个号码是重复的,这些数字在中奖的时候必须计数来判断
threenewbee 2014-08-14
  • 打赏
  • 举报
回复
string luck = "1234567"; string younumber = "1231231"; int 有几个数字相符 = luck.Zip(younumber, (x, y) => x == y ? 1 : 0).Sum();
於黾 2014-08-14
  • 打赏
  • 举报
回复
最简单的办法,2个数组遍历比较 高大上的办法,用LINQ获取两个数组的交集

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧