Visual C++ 6.0下编程问题——猜数字
1. 实验目的:掌握分支循环程序设计的方法,掌握, if-else,while, for语句的使用,掌握分支与循环语句的嵌套使用。2. 实验内容:设计一个猜数字游戏,游戏规则如下:
1、游戏开始,电脑随机生成三个不重复的十以内的数字。
2、玩家输入他所猜测的三个数字
3、将玩家提交的数与电脑生成的数进行比较,结果显示成"*A*B"。A代表位置正确数字也正确,B代表数字正确但位置不正确,比如:"2A0B"表示您有2个数字的位置正确且数值也正确,除此以外,您还猜对了0个数字,但位置不对。
4、玩家共有7次机会,在7次内,如果结果为“3A0B”,游戏成功,退出游戏。如果7次里玩家都没有猜对游戏失败。
3. 难点提示:可以用while语句产生3个不一样的随机数
4. 标准输入输出:加粗加大的是输入部分
第一种情况:
请输入你猜测的数字:
9 8 7
0A0B
请输入你猜测的数字:
1 2 3
0A1B
请输入你猜测的数字:
4 5 6
0A2B
请输入你猜测的数字:
1 5 6
0A1B
请输入你猜测的数字:
1 4 6
1A0B
请输入你猜测的数字:
5 4 2
1A1B
请输入你猜测的数字:
5 4 3
1A2B
很遗憾,你没有在规定次数内猜对。答案是 345
第二种情况:
请输入你猜测的数字:
2 4 8
0A1B
请输入你猜测的数字:
2 5 6
1A2B
请输入你猜测的数字:
6 5 2
恭喜,你猜对了
下面是我自己编的程序,总有点问题,但检查不出来,请大虾帮忙看一下:
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main()
{
int random[3],k,right,match,x,i,j,m[3];
srand (time(NULL));
random[1]=rand()*10/(RAND_MAX+1);
random[2]=rand()*10/(RAND_MAX+1);
while (random[2]==random[1])
{
return random[2];
}
random[3]=rand()*10/(RAND_MAX+1);
while (random[3]==random[1]||random[3]==random[2])
{
return random[3];
}
cout << "欢迎进入猜数字游戏,您将有7次机会:" << endl;
cout << "请输入您所猜的三位数" << endl;
for(k=1; k<=7; k++){
right=match=0;
cin >> m[1] >> m[2] >> m[3];
for(j=3; j>=1; j--) {
if(random[j]==m[j]) {right++;}
for(i=1; i<=3; i++) {
if(random[i]==m[j] && i!=j) {match++;}
}
}
if(right==3) {cout << "恭喜您,猜对了!" << endl; return 0;}
else
cout<< right <<"A" << match << "B" << endl;
cout<< "请重新输入:" << endl;
}
if(right!=3)
{cout << "对不起,您失败了。。。" << endl;
cout << random[1] << random[2] << random[3] << endl;
}
}