猜数字游戏编程c语言限制次数(猜数字游戏c语言编程代码)
C++猜数字限制输入次数
定义一个计数变量
int n=1;
放在int i,data,answer=2415;这句后面
在do循环里面加一句
n++;
把while(data!=answer)
改为while(data!=answer n4) 就可以了
求、 各位 哥哥姐姐;小弟在此 跪求 一 用C语言编写的文曲星猜数字游戏代码。
#include?stdio.h
#includestdlib.h
#includemath.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(level0level=15)
break;
if(level=0)
printf("Input?error!\n");
else
printf("too?many?times!?Please?reput.\n");
}while(level=0||level15);
//用循环实现多次猜数
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;i10;i++)
a[i]=i;
do
{
for(i=0;i10;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(number1000||number10000)
return?-1;
else
{
int?i;
for(i=0;in;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;i4;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;i4;i++)
{
for(j=0;j4;j++)
{
if(a[i]==b[j])
count++;
}
}?
return?count;
}
猜数游戏c语言
#includestdio.h
#includestdlib.h //随机数生成函数srand()与rand() 所需的头文件
#includetime.h //time()所需的头文件
int main()
{
int sysdata;//系统生成的数据
int n; //所猜的数据
int sum = 0;//记录猜的次数
srand((unsigned)time(NULL)); //随机数发生器初始化函数,以时间为种子
sysdata = rand()%100+1; //随机生成1到100的随机数
printf("退出程序请按:ctrl + c!\n");
while(1)
{
printf("请输入你猜的数据(1-100): ");
if(scanf("%d",n) != 1) //用于判断用户是否结束游戏
{
break; //跳出while循环,结束游戏
}
sum++; //每输入一次数据,猜的次数加1
if(sum == 10) // 当猜的次数大于10次的时候重新生成新的随机数
{
if(n == sysdata) //最后一次猜数正确,输出结果,结束游戏
{
printf("猜数正确,总共猜了%d次!\n",sum);
break; //跳出while循环,结束游戏
}
else //最后一次猜数不正确则重新开始游戏
{
printf("猜数次数超过%d次,重新开始游戏!\n",sum);
sysdata = rand()%100+1; //随机生成1到100的随机数
sum = 0;
}
}
else
{
if(n == sysdata)
{
printf("猜数正确,总共猜了%d次!\n",sum);//猜数正确,结束游戏
break; //跳出while循环,结束游戏
}
else if(n sysdata)
{
printf("你猜的数据太大!\n");
}
else
{
printf("你猜的数据太小!\n");
}
}
}
printf("猜数游戏结束!\n");
return 0;
}
测试结果:
退出程序请按:ctrl + c!
请输入你猜的数据(1-100): 50
你猜的数据太小!
请输入你猜的数据(1-100): 75
你猜的数据太小!
请输入你猜的数据(1-100): 85
你猜的数据太大!
请输入你猜的数据(1-100): 80
你猜的数据太小!
请输入你猜的数据(1-100): 82
你猜的数据太小!
请输入你猜的数据(1-100): 84
猜数正确,总共猜了6次!
猜数游戏结束!
Press any key to continue