梁小菊的秋天演员表: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分我也来试试