Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341470
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:06:37

#include
#include
#include
void main()
{
int guess,form[4],b=0,a=0;
cout<<"欢迎使用猜数字游戏"< cout<<"规则如下电脑随机产生一个4位数,由你来猜。位置且数字对了显示a 位置错了数字对了显示b"< cout<<"要根据a b的数量一直到猜对为止"<<"例如:"< cout<<"数字是1234 你猜测的是1324"<<"则显示2a4b"< for(int k=0;k<4;k++)
{
form[k]=rand()%10;
}
while(a!=4){
cin>>guess;
for(int i=3;i>-1;i--)
{
for(k=0;k<4;k++)
{
if(form[k]==(int)guess/pow(10,i)&&i+k==3)
{a++;}
if(form[k]==(int)guess/pow(10,i)&&i+k!=3)
{b++;}
else
a=a;b=b;
}
guess=guess-((int)guess/pow(10,i))*pow(10,i);
}
cout< }
}
调试通过了 但是达不到 游戏的效果 据说这叫逻辑错误 请高手帮我看看 十分感谢!!!

--------------------next---------------------
刚才上机试了一下,发现我刚才的想法太简单了,想帮你改改,结果把我也整蒙了。
这是我编的程序,照着别人的框架弄的,和你的思想不太一样,能凑合用。你看看吧。
我用VC6.0编的
先是类定义:
#if !defined(AFX_GUESS_H__2F78D86B_A27B_4F05_B062_77D67887CCBB__INCLUDED_)
#define AFX_GUESS_H__2F78D86B_A27B_4F05_B062_77D67887CCBB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CGuess  
{
public:
int Compare(char guess[4]);
void initial();
CGuess();
virtual ~CGuess();

protected:
int times;
char satz[4];
};

#endif // !defined(AFX_GUESS_H__2F78D86B_A27B_4F05_B062_77D67887CCBB__INCLUDED_)
**************************************************************
类的描述:
// Guess.cpp: implementation of the CGuess class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"    //stdafx.h里有#include "iostream.h"、#include "stdlib.h"和#include "time.h"
#include "Guess.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGuess::CGuess()
{
times=0;
::srand((unsigned)time(NULL));
}

CGuess::~CGuess()
{

}

void CGuess::initial()
{
int i,j;
for(i=0;i<4;i++)
{
satz[i]=rand()%10+48;
for(j=i-1;j>=0;j--)
{
if(satz[i]==satz[j])
{
i--;
break;
}
}
}
cout<<"开始猜吧:\n";//<}

int CGuess::Compare(char guess[4])
{
int i,j,a=0,b=0;
for(i=0;i<4;i++)
{
if(satz[i]==guess[i])
a++;
for(j=0;j<4;j++)
{
if(satz[i]==guess[j])
b++;
}
}
times++;
return times*100+a*10+b;
}
*****************************************************************
下面是主程序:
// game.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"    ////stdafx.h里有#include "iostream.h"、#include "stdlib.h"和#include "time.h"
#include "guess.h"


int main(int argc, char* argv[])
{
char g[4],n;
int k,i=1;
CGuess guessObj;
cout<<"\n******欢迎使用本程序!******\n"<<"h:浏览说明\nOthers:开始游戏\n";
cin>>n;
if(n=='h')
cout<<"计算机随机生成四位不重复的数字,请借助所给提示,在10次内猜出所生成数字。\n提示中B表示猜中的数字个数(位置可能不正确),A表示完全猜对的数字个数(位置正确)。\n";
for(;;)
{
guessObj.initial();
for(;;)
{
cin>>g[0]>>g[1]>>g[2]>>g[3];
k=guessObj.Compare(g);
if(k%100==44)
{
cout<<"\n恭喜你猜对啦!!您猜了"< break;
}
else
cout< }
cout<<"还玩儿吗?(y/n)";
cin>>n;
if(n=='n')
break;
}
return 0;
}

--------------------next---------------------

阅读(1150) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~