猜数字游戏题目描述:由计算机生成四个不重复的0-9之间的任意数,由玩家输入,计算机根据输入比较两组数字,给出类似xAyB的信息,A表示数字和相应的位置正确,B表示数字正确,但位置不正确。分别用x,y来表示两种情况,完全正确则显示“ok”。例如,如果计算机产生的是“12345”,而我们输入“21345”,则给出“3A2B”提示信息,表示“输入的数与计算机给出的数相比较,有3个数字正确且相应的位置正确,2个数字正确但相应的位置不正确”。直到输入正确为止。基本要求:(1)计算机根据输入比较两组数字,;(2)程序
2019-05-29
猜数字游戏
题目描述:由计算机生成四个不重复的0-9之间的任意数,由玩家输入,计算机根据输入比较两组数字,给出类似xAyB的信息,A表示数字和相应的位置正确,B表示数字正确,但位置不正确。分别用x,y来表示两种情况,完全正确则显示“ok”。例如,如果计算机产生的是“12345”,而我们输入“21345”,则给出“3A2B”提示信息,表示“输入的数与计算机给出的数相比较,有3个数字正确且相应的位置正确,2个数字正确但相应的位置不正确”。直到输入正确为止。
基本要求:(1)计算机根据输入比较两组数字,;
(2)程序操作友好、界面美观。
提高要求:(1)怎么样针对此游戏规则, 编写一个自动猜数字程序, 最终猜出产生的随机数。即, 现在猜数学程序已经产生一个待猜数字,需要编写一个程序, 具有人工智能, 能够决定每次猜什么数字, 并根据得到的返回结果(XAYB)进行下一步决策, 最终完成数字猜测.
(2)讲出程序原理;
设计提示: 注意随机数的产生。
优质解答
以前写过一个,当然,没做界面的,要做界面自己可以做
#include
#include
#include
using namespace std;
int main()
{
time_t t = time(0);
cout << ctime(&t)< char flag = 'y';
while (flag == 'y')
{
cout << "请输入4个不一样的数字,若位置正确表示为A,位置不正确表示为B,10次都猜不出来为输" << endl;
srand(GetTickCount());
int i, j;
char* sour = new char[4];
for (i = 0; i != 4; ++i)
{
sour[i] = rand() % 10 + 48;
for (j = 0; j < i; ++j)
{
if (sour[i] == sour[j])
{
i--;
}
}
}
char* gues = new char[4];
unsigned int a = 0;
unsigned int b = 0;
unsigned int time = 1;
while(a != 4 && time <= 10)
{
a = 0;
b = 0;
cout << time << ".请输入你猜的数字:" << "\t";
cin >> gues;
for (i = 0; i != 4; ++i)
{
if (gues[i] == sour[i])
{
a++;
}
}
for (i = 0; i != 4; ++i)
{
for (j = 0; j != 4; ++j)
{
if (i != j && gues[i] == sour[j])
{
b++;
}
}
}
cout << "\t\t\t" << a << "A" << b << "B" << endl;
time++;
}
if (time == 11)
{
cout << "很遗憾,你输了!" << endl;
cout << "正确答案是:" << sour << endl;
}
else
{
cout << "恭喜你!猜对了!" << endl;
}
cout << "是否继续?(y/n)";
cin >> flag;
cout << endl;
}
// system("pause");
return 0;
}
以前写过一个,当然,没做界面的,要做界面自己可以做
#include
#include
#include
using namespace std;
int main()
{
time_t t = time(0);
cout << ctime(&t)< char flag = 'y';
while (flag == 'y')
{
cout << "请输入4个不一样的数字,若位置正确表示为A,位置不正确表示为B,10次都猜不出来为输" << endl;
srand(GetTickCount());
int i, j;
char* sour = new char[4];
for (i = 0; i != 4; ++i)
{
sour[i] = rand() % 10 + 48;
for (j = 0; j < i; ++j)
{
if (sour[i] == sour[j])
{
i--;
}
}
}
char* gues = new char[4];
unsigned int a = 0;
unsigned int b = 0;
unsigned int time = 1;
while(a != 4 && time <= 10)
{
a = 0;
b = 0;
cout << time << ".请输入你猜的数字:" << "\t";
cin >> gues;
for (i = 0; i != 4; ++i)
{
if (gues[i] == sour[i])
{
a++;
}
}
for (i = 0; i != 4; ++i)
{
for (j = 0; j != 4; ++j)
{
if (i != j && gues[i] == sour[j])
{
b++;
}
}
}
cout << "\t\t\t" << a << "A" << b << "B" << endl;
time++;
}
if (time == 11)
{
cout << "很遗憾,你输了!" << endl;
cout << "正确答案是:" << sour << endl;
}
else
{
cout << "恭喜你!猜对了!" << endl;
}
cout << "是否继续?(y/n)";
cin >> flag;
cout << endl;
}
// system("pause");
return 0;
}