给定五组数字,判定生日日期在哪一天(算命)

给定五组数字,判定生日日期在哪一天(算命)

五组数据

第一组
  1   3   5   7
  9  11 13 15
 17 19 21 23
 25 27 29 31
第二组
  2   3   6   7
 10 11 14 15
 18 19 22 23
 26 27 30 31
第三组
  4   5   6   7
 12 13 14 15
 20 21 22 23
 28 29 30 31
第四组
  8   9  10 11
 12 13 14 15
 24 25 26 27
 28 29 30 31
第五组
 16 17 18 19
 20 21 22 23
 24 25 26 27
 28 29 30 31

玩家依次说明自己的生日是否在这五组数据中,即可判断准确生日。

原理:每组数对应二进制每一位为1的数字(第n组数的二进制的第n位就是1),所以根据该数是否在每一组中即可判断具体是哪个数字。
  在第一组中 +1,没在则加0
  在第一组中 +2,没在则加0
  在第一组中 +4,没在则加0
  在第一组中 +8,没在则加0
  在第一组中 +16,没在则加0
代码实现
#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>

int main(){

	int input;
	int ret = 0;
	printf("根据提示说明你的生日(或自己想一个1-31之间的数字)是否在以下五张表中,系统自动生成你的生日(1-31)\n");
	printf("输入任意(数字)键进行下一步:\n");
	scanf("%d", &input);
	system("cls");
	while (1)
	{
		printf(" 1  3  5  7\n");
		printf(" 9 11 13 15\n");
		printf("17 19 21 23\n");
		printf("25 27 29 31\n");
		printf("你的生日(或想得那个0-31的数字)在这张表上吗?请输入1表示在,0表示不在\n");
		scanf("%d", &input);
		if (input == 1){
			ret += 1;
			break;
		}
		else if (input == 0){
			ret += 0;
			break;
		}
		else{
			printf("请输入正确信息:\n");
		}
	}
	system("cls");
	while (1)
	{
		printf(" 2  3  6  7\n");
		printf("10 11 14 15\n");
		printf("18 19 22 23\n");
		printf("26 27 30 31\n");
		printf("你的生日(或想得那个0-31的数字)在这张表上吗?请输入1表示在,0表示不在\n");
		scanf("%d", &input);
		if (input == 1){
			ret += 2;
			break;
		}
		else if (input == 0){
			ret += 0;
			break;
		}
		else{
			printf("请输入正确信息:\n");
		}
	}
	system("cls");
	while (1)
	{
		printf(" 4  5  6  7\n");
		printf("12 13 14 15\n");
		printf("20 21 22 23\n");
		printf("28 29 30 31\n");
		printf("你的生日(或想得那个0-31的数字)在这张表上吗?请输入1表示在,0表示不在\n");
		scanf("%d", &input);
		if (input == 1){
			ret += 4;
			break;
		}
		else if (input == 0){
			ret += 0;
			break;
		}
		else{
			printf("请输入正确信息:\n");
		}
	}
	system("cls");
	while (1)
	{
		printf(" 8  9 10 11\n");
		printf("12 13 14 15\n");
		printf("24 25 26 27\n");
		printf("28 29 30 31\n");
		printf("你的生日(或想得那个0-31的数字)在这张表上吗?请输入1表示在,0表示不在\n");
		scanf("%d", &input);
		if (input == 1){
			ret += 8;
			break;
		}
		else if (input == 0){
			ret += 0;
			break;
		}
		else{
			printf("请输入正确信息:\n");
		}
	}
	system("cls");
	while (1)
	{
		printf("16 17 18 19\n");
		printf("20 21 22 23\n");
		printf("24 25 26 27\n");
		printf("28 29 30 31\n");
		printf("你的生日(或想得那个0-31的数字)在这张表上吗?请输入1表示在,0表示不在\n");
		scanf("%d", &input);
		if (input == 1){
			ret += 16;
			break;
		}
		else if (input == 0){
			ret += 0;
			break;
		}
		else{
			printf("请输入正确信息:\n");
		}
	}
	system("cls");
	printf("你的生日(或数字)是:%d\n", ret);
	
	return 0;
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值