求助C++猜数字游戏,help!!!

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:36:38
设计一个猜数字游戏,游戏规则如下:
1、游戏开始,电脑随机生成三个不重复的十以内的数字。
2、玩家输入他所猜测的三个数字
3、将玩家提交的数与电脑生成的数进行比较,结果显示成"*A*B"。A代表位置正确数字也正确,B代表数字正确但位置不正确,比如:"2A0B"表示您有2个数字的位置正确且数值也正确,除此以外,您还猜对了0个数字,但位置不对。
4、玩家共有7次机会,在7次内,如果结果为“3A0B”,游戏成功,退出游戏。如果7次里玩家都没有猜对游戏失败。

我的做法是:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{ int n1,n2,n3,i,na=0,nb=0,num1,num2,num3;

srand(time(NULL));

num1=rand()*10/(RAND_MAX+1);

do{ num2=rand()*10/(RAND_MAX+1);}while (num1==num2);

do{ num3=rand()*10/(RAND_MAX+1);}while (num3==num2||num3==num1);

for(i=1;i<8;i++){
cout<<"请输入你猜测的数字:\n";
cin>>n1>>n2>>n3;

if (n1==num1) na++;
if (n2==num2) na++;
if (n3==num3) na++;

if (n1==num2||n1==num3) nb++;
if (n

两处错误
第一处 在for块的第一行没有初始化na和nb
第二处 if (na=3) {cout<<"恭喜,你猜对了"<<endl;
应该是na==3
而且你的代码逻辑也有点问题
比如随机的三个数为345,输入333 应该输出1A0B
而你的程序输出的是1A2B
把你的程序改了下
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
int n1,n2,n3,i,na=0,nb=0,num1,num2,num3;

srand(time(NULL));

num1=rand()*10/(RAND_MAX+1);

do{ num2=rand()*10/(RAND_MAX+1);}while (num1==num2);

do{ num3=rand()*10/(RAND_MAX+1);}while (num3==num2||num3==num1);
cout <<num1 <<num2 <<num3;
for(i=1;i<8;i++){
na=0;
nb=0;
cout<<"请输入你猜测的数字:\n";
cin>>n1>>n2>>n3;

if (n1==num1) na++;
if (n2==num2) na++;
if (n3==num3) na++;