一道简单的 C#编程题目。

1、 猜数字游戏:由计算机生成一个4位数,每位数字各不相同(如:1234。1123则是错误的),用户输入数字进行猜测,计算机对比正确答案。如果用户猜中4位数中包含的数字,但位置不对,则B计数器累加一;如果用户猜中4位数中包含的数字,且位置正确,否则A计数器累加一。最后,计算器显示A、B计数器的统计结果。不断进行循环,直到用户猜测出正确结果,或者用户猜测的次数超过7次,则中断循环,显示正确结果。如:计算生成的数字为1234,请输入第1次猜测的数字:5678,猜测结果:A-0,B-0,输入第2次猜测的数字:3456,猜测结果:A-0,B-2,请输入第3次猜测的数字:7834,猜测结果:A-2,B-0,请输入第4次猜测的数字:1034,猜测结果:A-3,B-0,请输入第5次猜测的数字:1234,猜测结果:A-4,B-0,猜中了!正确答案是1234。如果用户猜测次数超过7次,则显示:很遗憾,猜测超过7次,游戏结束。正确答案是1234。

第1个回答  2013-12-31
static void Main(string[] args)
{
//是否成功
bool isSuccess=false;
var random = new Random();
List<int> source = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
String answer = string.Empty;
//生成4位数字
for (int f = 0; f < 4; f++)
{
int i = random.Next(f == 0 ? 1 : 0, source.Count);
answer+=source[i];
source.RemoveAt(i);
}
//进行7次猜测
for (int j = 0; j < 7; j++)
{
Console.WriteLine("输入猜测数字 Round:"+(j+1));
string strin = null;
strin = Console.ReadLine();
Regex regex = new Regex("^[1-9][0-9]{3}$");
//判断数据是否合法
while (strin == null || !regex.IsMatch(strin)||strin.Distinct().Count()<3)
{
Console.WriteLine("输入错误,请输入4位无重复数字");
strin = Console.ReadLine();
}
//完全正确数
int a = 0;
//包含但位置错误
int b = 0;
for (int k = 0; k < 4; k++)
{
if (answer[k] == strin[k])
{
a++;
}
else if (answer.Contains(strin[k].ToString()))
{
b++;
}
}
if (a==4)
{
isSuccess = true;
break;
}
else
{
Console.WriteLine("A{0}B{1}",a,b);
}
}
Console.WriteLine(isSuccess?"成功":"失败");
Console.WriteLine("任意键退出");
Console.ReadLine();
}
第2个回答  2013-12-31
数字都是0-9,可以先产生第一位数字,然后排出第一位数字之后再随机产生第二位,以此类推,这个四位数完成之后,开始用户的操作,用用户输入的数字去对应系统自动生成的数据,由于只有四位,你可以一位一位地进行判断,用数字除以1000取整,得到第一个,……判断完成后,AB根据判断结果,加减值,于此同时设置计数器,开始为0,用户才一次自动加1,超过7,提示(略),如果7次之内输入正确,提示(略)。
第3个回答  2013-12-31
请问你 :计算机产生的1234是正确的还是错误的
第4个回答  2013-12-31
1234吧
相似回答