人机猜数由计算机想一个四位数,人猜这个四位数是多少。人输入这个四位数后,计算机先判断这四个数中有几个猜对,且在猜对的数字中又有几位位置是对的,等结果显示,给人提示,请人再猜 ,直到人猜出计算机所想的数

编程实现该游戏,游戏结束时,显示人猜一个数用了几次。
提示:用库函数random()产生一个随机数。
如:
Int z;
z= random(9999);

关于随机数的详解在本人2020-07-05发布的猜数游戏题目中有过详解.

#include<stdio.h>
#include<stdlib.h>
int main()
{
    
    
	int a,z,t,i,c,m,g,s,j,k,l[4]; //j:数字正确的位数 k:位置正确的位数
	srand((unsigned)time(0)); //随机数种子(否则便是伪随机数)
	z=rand()%10000+1; //计算机想一个随机数
	printf("****欢迎参加人机猜数游戏****");
	printf("\n");
	printf("\n");
	printf("我有一个四位数的数字,请猜一猜!\n");
	printf("\n");

for(c=1;;c++) //c: 猜数次数计数器
{
    
    
	scanf("%d",&g); //请人猜
	a=z,j=0,k=0,l[0]=l[1]=l[2]=l[3]=0;
for(i=1;i<5;i++) //i:原数中的第i位数。个位为第一位,千位为第四位
{
    
    
	s=g;
	m=1;
for(t=1;t<5;t++) //人所猜想的数
{
    
    
if(a%10 == s%10) //若第i位与人猜的第t位相同
{
    
    
if(m&&t!=l[0]&&t!=l[1]&&t!=l[2]&&t!=l[3])
{
    
    
	j++;m=0;l[j-1]=t; 	//若该位置上的数字尚未与其它数字"相同" 
} 		//记录相同数字时,该数字在所猜数字中的位置
if(i == t) k++; 	//若位置也相同,则计数器k加1
}
	s/=10;
}
	a/=10;
}
printf("你猜对了%d个数字,\n",j);
printf("并且在猜对的数字中有%d个位置也是正确的.\n",k);
printf("\n请输入一个四位数:\n");
if(k == 4) 
{
    
    
	break; 		//若位置全部正确,则人猜对了,退出
	printf("恭喜你,猜对了!");
	printf("\n");
	printf("你用了%d次猜出了这个数.\n",c);
}
	}
		} 

对我的博客或其他方面有任何见解或问题的话都可以私信我
或者联系本人QQ:3128909688
微信:DreamHerome
欢迎致电

猜你喜欢

转载自blog.csdn.net/RViewSonic/article/details/108441026