给定五组数字,判定生日日期在哪一天(算命)
五组数据
第一组
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; }
讯享网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42385.html