求、 各位 哥哥姐姐;小弟在此 跪求 一 用C语言编写的文曲星猜数字游戏代码。

求、各位哥哥姐姐;小弟在此跪求一用C语言编写的文曲星猜数字游戏代码。是需要带记录分数的,如果有上一个记录的能提示出来。谢谢~~... 求、 各位 哥哥姐姐;
小弟在此 跪求
一 用C语言编写的文曲星猜数字游戏代码。
是需要带记录分数的 ,如果有上一个记录的 能提示出来。
谢谢~~
展开
 我来答
好名字都被取了
2019-11-17 · TA获得超过423个赞
知道答主
回答量:101
采纳率:90%
帮助的人:6.2万
展开全部
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#include <time.h>

void MakeDigit(int a[],int n);
int InputGuess(int b[],int n,int number);
int IsRightPosition(int a[],int b[],int n);
int IsRightDigit(int a[],int b[]);

main()
{
int number;  //储存用户输入的整数
int level=1;  //用户最多想猜多少次
int count=1;  //记录用户已经猜的次数
int rightPosition;  //用户输入的数字中正确位置的数量
int rightDigit;  //用户输入的数字中正确且在不同位置的数字的数量
int a[10]={0};  //储存系统随机生成的四位数字
int b[4]={0};  //储存拆分后的用户输入的四位数字

int i;
MakeDigit(a,4);
//提示用户输入最多能够猜多少次(保证在0-15次之间)
do{
printf("How many times do you want to guess:");
//增强程序的健壮性
while(scanf(" %d",&level)!=1)
{
fflush(stdin);
printf("Input error!\n");
}
//将猜的次数限制在0-15次之间
if(level>0&&level<=15)
break;
if(level<=0)
printf("Input error!\n");
else
printf("too many times! Please reput.\n");
}while(level<=0||level>15);

//用循环实现多次猜数
do{
printf("NO.%d of %d times:",count,level);
scanf(" %d",&number);

//增强程序的健壮性
if(InputGuess(b,4,number)==-1)
{
printf("Input wrong! \n");
continue;
}
rightPosition=IsRightPosition(a,b,4);
rightDigit=IsRightDigit(a,b)-rightPosition;
printf("%dA%dB\n",rightPosition,rightDigit);
count++;
}while(rightPosition==4||count<=level);

//输出提示和结果
if(rightPosition==4)
printf("Congratulations,you guess the right number !\n");
else
printf(" Sorry,you haven't guess the right number. \n");
printf("Correct answer is: %d%d%d%d\n",a[0],a[1],a[2],a[3]);
system("pause");
}

//函数功能:将计算机随机生成的各位相异的四个四位数字存储到数组a中
void MakeDigit(int a[],int n)
{
int i,j,temp;
srand(time(NULL));
for(i=0;i<10;i++)
a[i]=i;
do
{
for(i=0;i<10;i++)
{
j=rand()%10;
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}while(a[0]==0);
}

//函数功能:将用户猜的四位数存入数组b中,如果用户输入非法数据则返回-1
int InputGuess(int b[],int n,int number)
{
if(number<1000||number>10000)
return -1;
else
{
int i;
for(i=0;i<n;i++)
{
b[3-i]=number%10;
number=number/10;
}
return 1;
}
}

//函数功能:输出数组a和数组b相同位置的元素相等的个数
int IsRightPosition(int a[],int b[],int n)
{
int i,j;
int count=0;
for(i=0;i<4;i++)
{
j=i;
if(a[i]==b[j])
count++;
}
return count;
}

//函数功能:输出数组a与数组b中相同元素的总数
int IsRightDigit(int a[],int b[])
{
int i,j;
int count=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(a[i]==b[j])
count++;
}

return count;
}
woaiginobily
2011-01-07 · TA获得超过695个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:225万
展开全部
基本上不可能的,分数这么低的,还想要别人的劳动成果!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-01-07
展开全部
先给钱再说
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式