淮安黑社会谁最厉害:C程序设计一个数学小游戏

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/19 02:05:17
我想做这样的一个程序:这是一个小游戏,我在其它地方玩过,在0-9这10个数中猜出4个数,你随便输入4个数,如果你输入的4个数和答案中的4个相同,就会提示B,好果位置也相同,就会提示A。例:答案为6523,你输入6032,按确定后就会有“1A2B”的提示,即有一个数,数对位置也对,有2个数,数对,而位置不对。就这样猜。可以猜9次吧。 我该怎么做呢? 我只是个C语言的初学者。

我给你写了这个程序,并且通过测试了,你可以直接使用。
我的网站是 www.bigdragonsoft.com ,有什么问题可以通过我的网站联络我。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 4 //定义产生4个数字

///////////////////
//产生随即数字
///////////////////
void GetRandNum(int *num)
{
srand(unsigned int(time(NULL)));
for(int i=0; i<NUM; i++)
{
num[i] = rand()%10;

bool flag = false;
for(int j=0; j<i; j++)
{
if(num[i] == num[j])
{
flag = true;
break;
}
}
if(flag) --i;
}
}

///////////////////
//用户输入
///////////////////
bool UserInput(const int ×,int *data)
{
printf("\n第 %d 次猜数:",times);

char ch[256];
scanf("%s",ch);

for(int i=0;i<NUM-1;i++)
{
if(ch[i]<'0' || ch[i]>'9') return false;
for(int j=i+1;j<NUM;j++)
{
if(ch[j]<'0' || ch[j]>'9') return false;
if(ch[i]==ch[j]) return false;
}
}

for(int i=0;i<NUM;i++)
data[i] = ch[i]-'0';
return true;
}

///////////////////
//与随机产生的数比较
///////////////////
bool Check(const int *RandNum,const int *GuessNum)
{
char guess[NUM]; //存放结果

for(int i=0;i<NUM;i++)
for(int j=0;j<NUM;j++)
{
if(RandNum[i]==GuessNum[j])
if(i==j)
guess[i] = 'A';
else
guess[i] = 'B';
}

int countA = 0;
int countB = 0;
for(int i=0;i<NUM;i++)
{
if(guess[i]=='A') countA++;
if(guess[i]=='B') countB++;
}

printf("\n%dA%dB",countA,countB);

if(countA==NUM)
return true;
else
return false;
}

///////////////////
//主程序部分
///////////////////
int main()
{

int nRandNum[NUM]; //用于存放随即数字
GetRandNum(nRandNum); //产生随即数
for(int i=0;i<NUM;i++) printf("%d,",nRandNum[i]);

int nUserData[NUM]; //存放用户输入的数字
for(int i=0;i<10;i++)
{
if(UserInput(i+1,nUserData))
{
if(Check(nRandNum,nUserData))
{
printf("\n恭喜你,猜中了!\n");
return 0;
}
}
else
{
--i;
printf("\n输入错误,重新输入!\n");
}
}
printf("\n猜了10次,你都没有猜对,失败!!!\n");
return 0;
}

用字符串存输入的数据和你随机生成的数据,然后每个字符第个字符的判断,如果只是相同就B加一,位置也相同就A加一。再加一个次数控制让它小于9。A等于四就输出正确。那样就行了。
不过很麻烦的。你给高点分的话,可以考虑帮你做。

建议你给个3,40分我也来试试