当前位置:编程学习 > C/C++ >>

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;
}

}

答案:#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;

int main()
{
int random[4],k,right,match,x,i,j,m[4]; //注意数组长度.数组下标从0.
//后面用1,2,3做下标.那么长度就要定义成4.
srand (time(NULL));

random[1]=rand()*10/(RAND_MAX+1);

random[2]=rand()*10/(RAND_MAX+1);

while (random[2]==random[1])
{
random[2]=rand()*10/(RAND_MAX+1);
}

random[3]=rand()*10/(RAND_MAX+1);

while (random[3]==random[1]||random[3]==random[2])
{
random[3]=rand()*10/(RAND_MAX+1);
}


cout << "欢迎进入猜数字游戏,您将有7次机会:" << endl;
cout << "请输入您所猜的三位数" << endl;
cout<<random[1]<<random[2]<<random[3]<<endl;
for(k=1; k<=7; k++)
{
right=match=0;

cin >> m[1] >> m[2] >> m[3];

for(j=1; j<=3; j++) {
if(random[j]==m[j]) {right++;}

for(i=1; i<=3; i++) {
if(i!=j && random[i]==m[j]) {match++;}
}
}
if(right==3) {cout << "恭喜您,猜对了!" << endl; return 0;}

else
cout<< right <<"A" << match << "B" << endl;
if(k!=7)
cout<< "请重新输入:" << endl;
}

if(right!=3)
{
cout << "对不起,您失败了。。。" << endl;
cout << random[1] << random[2] << random[3] << endl;
}

}

if(right==3) {cout << "恭喜您,猜对了!" << endl; return 0;}
改为:if(right==3) {cout << "恭喜您,猜对了!" << endl;break;}即要退出for(i=1;i<=7; i++)循环

if(right!=3)
{cout << "对不起,您失败了。。。" << endl;
改为:if(right==8)
{cout << "对不起,您失败了。。。" << endl;
即已试了7次了还没成功

最后还多了个}吧 ....呵

上一个:推箱子源代码 要C++的 最好体现出继承
下一个:有没有谁知道C++怎样学才最易学?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,