人机猜数字

今天是大一下学期上课的第一天,学校给我们安排了c语言项目实训,听说老师是讯飞公司的讲师兼工程师

今天算是当面见到了一次程序员了哈哈,后面还有windows编程,要跟紧老师的节奏


上午讲了一个猜数字游戏,和以前猜数字不怎么一样,大概如下

电脑随机生成1个4位数,这个数每一位不为0,且都不相同,我们人输入1个4位数来猜,当猜到位置相同且数字相同

则A+1,当猜到位置不同但数字相同则B+1,比如生成1234, 我们输入1356,则输出A为1,B也为1,直到所有相同位置上的数也都相同则游戏胜利


知识点补充:

 随机种子函数 srand((int)time(NULL));

rand()函数 在1000到9999的范围内取数方法: a=1000,b=9999; s=rand()%(b-a+1距离差)+a;

代码如下:

#include<stdio.h>
#include<time.h>
#include<windows.h>
int check(int n, int *s)
{
	int i=3,t;
	t=n;
	while (n)
	{
		s[i] = n%10;
		if (s[i]==0)
			return 0;
		n /= 10;
		i--;
	}
	if (s[0]!=s[1]&&s[0]!=s[2]&&s[0]!=s[3] && s[1]!=s[2]&&s[1]!=s[3] && s[2]!=s[3])
		return t;
    return 0;
}
int main()
{
	int number,numberplay,a[4],b[4];
	int A=0,B=0,i,j;
    srand(time(NULL));
	printf("玩家输入数字:");
	while (1) //
	{
		number = rand() % (10000 - 1000 + 1) + 1000; //随机数范围,% 距离差 + 小的数
		number = check(number, a);//生成合法数
		if (number)
		{
			break;
		}
	}
    while (1)//玩家输入的数检测
	{
		A=B=0;
		scanf("%d",&numberplay);
		numberplay = check(numberplay, b);
		//输入不合法
		if (!numberplay)
		{
			printf("请输入四位不相同且都不为0的数!\n");
			continue;
		}
		printf("%d %d\n",number,numberplay);
		//位置相同且数字相同
		for (i=0;i<4;i++)
		{
			if (a[i]==b[i])
				A++;
		}
		//数字相同但位置不同
		for (i=0;i<3;i++)
		{
			for (j=i+1;j<4;j++)
			{
				if (a[i]==b[j]&&i!=j)
					B++;
			}
		}
		printf("本次结果:%d %d\n",A,B);
		if (A==4)
		{
			printf("正确!!!\n");
			break;
		}
	}
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值