一道推理题:问题的答案

一道推理题如下:
1.第一个答案是A的问题是哪一个?( )
A、1 B、2 C、3 D、4
2.唯一的连续两个具有相同答案的问题是( )
A、5,6 B、6,7 C、7,8 D、8,9
3.本问题答案和哪一个问题的答案相同( )
A、4 B、9 C、8 D、2
4.答案是A的问题的个数是( )
A、5 B、4 C、3 D、2
5.本问题答案和哪一个问题的答案相同( )
A、1 B、2 C、3 D、4
6.答案选A的问题的个数和答案选什么的问题的个数相同( )
A、无 B、C C、C D、D
7.按照字母顺序,本题答案与下一题相差( )(A与B间,或B与A间均相差1)
A、3 B、2 C、1 D、0
8.本题中答案为元音的题数为( )
A、0 B、1 C、2 D、3
9.本题中答案为辅音的题数( )
A、是合数 B、是质数 C、<5 D、是平方数
10.本题答案为( )
A、A B、B C、C D、D

答案是:A,C,B,C,A,C,D,D,B,A
一共10道题,每个题的答案有A,B,C,D四种可能性,因此可能的解有4^10种可能性,根据题目遍历答案,找到合适的答案即返回。

#include <iostream>
#include <math.h>
class Question{
   
public:
    void InitAnsList();//对答案进行初始化
    void FindAnsList();//穷举每一个可能的答案,找到正确答案后返回
    void PrintAnsList();//打印答案
private:
    char answer[10];//存储答案的变量
    bool CheckAnswer01();
    bool CheckAnswer02();
    bool CheckAnswer03();
    bool CheckAnswer04();
    bool CheckAnswer05();
    bool CheckAnswer06();
    bool CheckAnswer07();
    bool CheckAnswer08();
    bool CheckAnswer09();
    bool CheckAnswer10(); //10个题目,10个校验条件
    bool UpdateAnswer(); //更新答案

};

void Question::InitAnsList()
{
   
    for(int loop = 0;loop < 10;loop++)
    {
   
        answer[loop] = 'A';
    }
    answer[9] = 'A' - 1;
}

void Question::FindAnsList()
{
   
    while(UpdateAnswer())
    {
   
        if(!CheckAnswer01()) continue;
        if(!CheckAnswer02()) continue;
        if(!CheckAnswer03()) continue;
        if(!CheckAnswer04()) continue;
        if(!CheckAnswer05()) continue;
        if(!CheckAnswer06()) continue;
        if(!CheckAnswer07(
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值