一道古老的智力题——奇怪的问题

本文提供了一组复杂的逻辑谜题解答程序,通过递归检查每个问题的条件,确保所有10个问题的答案符合题目要求。该程序遍历所有可能的答案组合,并验证其准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

奇怪的问题
请回答下面10个问题,各题都恰有一个答案是正确的:
(1)第一个答案是B的问题是哪一个?
A、2
B、3
C、4
D、5
E、6
(2)恰好有两个连续问题的答案是一样的,它们是:
A、2,3
B、3,4
C、4,5
D、5,6
E、6,7
(3)本问题答案和哪一个问题的答案相同?
A、1
B、2
C、4
D、7
E、6
(4)答案是A的问题的个数是:
A、0
B、1
C、2
D、3
E、4
(5)本问题答案和哪一个问题的答案相同?
A、10
B、9
C、8
D、7
E、6
(6)答案是A的问题的个数和答案是什么的问题的个数相同?
A、B
B、C
C、D
D、E
E、以上都不是
(7)按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
A、4
B、3
C、2
D、1
E、0(注:A和B相差一个字母)
(8)答案是元音字母的问题的个数是:
A、2
B、3
C、4
D、5
E、6(注:A和E是元音字母)
(9)答案是辅音字母的问题的个数是:
A、一个质数
B、一个阶乘数
C、一个平方数
D、一个立方数
E、5的倍数
(10)本问题的答案是:
A、A
B、B
C、C
D、D
E、E

 


 

Solution as follow 

 

// good.cpp : 定义控制台应用程序的入口点。
//

#include 
"stdafx.h"

#include 
"math.h"
#include 
"stdio.h"

//题1  返回:0 正确  -1 1~5 错误
int NO1(int *Answer)
{
    
int i=1;
    
while(i<=10)
    
{
        
if(Answer[i]==2)
        
{
            
switch(Answer[1])
            
{
            
case 1
                
if(i==2)
                    
return 0;
                
else
                    
return 1;
            
case 2:
                
if(i==3)
                    
return 0;
                
else
                    
return 2;
            
case 3:
                
if(i==4)
                    
return 0;
                
else
                    
return 3;
            
case 4:
                
if(i==5)
                    
return 0;
                
else
                    
return 4;
            
case 5:
                
if(i==6)
                    
return 0;
                
else
                    
return 5;
            
default:
                
return -1;
            }

        }

        i
++;
    }

    
return -1;
}


//题2  返回:0 正确  -1 1~5 错误
int NO2(int *Answer)
{
    
int i=1,n=0;
    
while(i<10)
    
{
        
if(Answer[i]==Answer[i+1]) n++;
        i
++;
    }

    
if(n==1)
    
{
        
switch(Answer[2])
        
{
        
case 1:
            
if(Answer[2]==Answer[3])
                
return 0;
            
else
                
return 1;
        
case 2:
            
if(Answer[3]==Answer[4])
                
return 0;
            
else
                
return 2;
        
case 3:
            
if(Answer[4]==Answer[5])
                
return 0;
            
else
                
return 3;
        
case 4:
            
if(Answer[5]==Answer[6])
                
return 0;
            
else
                
return 4;
        
case 5:
            
if(Answer[6]==Answer[7])
                
return 0;
            
else
                
return 5;
        
default:
            
return -1;
        }

    }

    
return -1;
}


//题3  返回:0 正确  -1 1~5 错误
int NO3(int *Answer)
{
    
switch(Answer[3])
    
{
    
case 1:
        
if(Answer[3]==Answer[1])
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(Answer[3]==Answer[2])
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(Answer[3]==Answer[4])
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(Answer[3]==Answer[7])
            
return 0;
        
else
            
return 4;
    
case 5:
        
if(Answer[3]==Answer[6])
            
return 0;
        
else
            
return 5;
    
default:
        
return -1;
    }

    
return -1;
}


//题4  返回:0 正确  -1 1~5 错误
int NO4(int *Answer)
{
    
int i=1,n=0;
    
while(i<=10)
    
{
        
if(Answer[i]==1) n++;
        i
++;
    }

    
switch(Answer[4])
    
{
    
case 1:
        
if(n==0)
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(n==1)
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(n==2)
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(n==3)
            
return 0;
        
else
            
return 4;
    
case 5:
        
if(n==4)
            
return 0;
        
else
            
return 5;
    
default:
        
return -1;
    }

    
return -1;
}


//题5  返回:0 正确  -1 1~5 错误
int NO5(int *Answer)
{
    
switch(Answer[5])
    
{
    
case 1:
        
if(Answer[5]==Answer[10])
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(Answer[5]==Answer[9])
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(Answer[5]==Answer[8])
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(Answer[5]==Answer[7])
            
return 0;
        
else
            
return 4;
    
case 5:
        
if(Answer[5]==Answer[6])
            
return 0;
        
else
            
return 5;
    
default:
        
return -1;
    }

    
return -1;
}


//题6  返回:0 正确  -1 1~5 错误
int NO6(int *Answer)
{
    
int i=1,na=0,nb=0,nc=0,nd=0,ne=0;
    
while(i<=10)
    
{
        
switch(Answer[i])
        
{
        
case 1:na++;break;
        
case 2: nb++;break;
        
case 3: nc++;break;
        
case 4: nd++;break;
        
case 5: ne++;break;
        
default:return -1;break;
        }

        i
++;
    }

    
switch(Answer[6])
    
{
    
case 1:
        
if(na==nb)
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(na==nc)
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(na==nd)
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(na==ne)
            
return 0;
        
else
            
return 4;
    
case 5:
        
if((na!=nb)&&(na!=nc)&&(na!=nd)&&(na!=ne))
            
return 0;
        
else
            
return 5;
    
default:
        
return -1;
    }

    
return -1;
}


//题7  返回:0 正确  -1 1~5 错误
int NO7(int *Answer)
{
    
switch(Answer[7])
    
{
    
case 1:
        
if(abs(Answer[7]-Answer[8])==4)
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(abs(Answer[7]-Answer[8])==3)
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(abs(Answer[7]-Answer[8])==2)
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(abs(Answer[7]-Answer[8])==1)
            
return 0;
        
else
            
return 4;
    
case 5:
        
if(abs(Answer[7]-Answer[8])==0)
            
return 0;
        
else
            
return 5;
    
default:return -1;
    }

    
return -1;
}


//题8  返回:0 正确  -1 1~5 错误
int NO8(int *Answer)
{
    
int i=1,n=0;
    
while(i<=10)
    
{
        
if((Answer[i]==1)||(Answer[i]==5)) n++;
        i
++;
    }

    
switch(Answer[8])
    
{
    
case 1:
        
if(n==2)
            
return 0;
        
else
            
return 1;
    
case 2:
        
if(n==3)
            
return 0;
        
else
            
return 2;
    
case 3:
        
if(n==4)
            
return 0;
        
else
            
return 3;
    
case 4:
        
if(n==5)
            
return 0;
        
else
            
return 4;
    
case 5:
        
if(n==6)
            
return 0;
        
else
            
return 5;
    
default:return -1;
    }

    
return -1;
}

//题9  返回:0 正确  -1 1~5 错误
int NO9(int *Answer)
{
    
int i=1,n=0;
    
while(i<=10)
    
{
        
if((Answer[i]==2)||(Answer[i]==3)||(Answer[i]==4)) n++;
        i
++;
    }

    
switch(Answer[9])
    
{
    
case 1:
        
if((n==2)||(n==3)||(n==5)||(n==7))//质数(素数)
            return 0;
        
else
            
return 1;
    
case 2:
        
if((n==1)||(n==2)||(n==6))//阶乘数
            return 0;
        
else
            
return 2;
    
case 3:
        
if((n==1)||(n==4)||(n==9))//平方数
            return 0;
        
else
            
return 3;
    
case 4:
        
if((n==1)||(n==8))//立方数
            return 0;
        
else
            
return 4;
    
case 5:
        
if((n==5)||(n==10))//5的倍数
            return 0;
        
else
            
return 5;
    
default:return -1;
    }

    
return -1;
}



int _tmain(int argc, _TCHAR* argv[])
{
    
int i;
    
int Answer[11];
    
char Answerc[5= {'a','b','c','d','e'};
    
for (Answer[1]=1;Answer[1]<=5;Answer[1]++)
        
for (Answer[2]=1;Answer[2]<=5;Answer[2]++)
            
for (Answer[3]=1;Answer[3]<=5;Answer[3]++)
                
for (Answer[4]=1;Answer[4]<=5;Answer[4]++)
                    
for (Answer[5]=1;Answer[5]<=5;Answer[5]++)
                        
for (Answer[6]=1;Answer[6]<=5;Answer[6]++)
                            
for (Answer[7]=1;Answer[7]<=5;Answer[7]++)
                                
for (Answer[8]=1;Answer[8]<=5;Answer[8]++)
                                    
for (Answer[9]=1;Answer[9]<=5;Answer[9]++)
                                        
for (Answer[10]=1;Answer[10]<=5;Answer[10]++)
                                        
{
                                            
if((NO1(Answer)==0)&&(NO2(Answer)==0)&&(NO3(Answer)==0)&&(NO4(Answer)==0)&&(NO5(Answer)==0)&&(NO6(Answer)==0)&&(NO7(Answer)==0)&&(NO8(Answer)==0)&&(NO9(Answer)==0))
                                            
{
                                                
for(i = 1; i < 11; i++){
                                                    printf(
" %c ",Answerc[Answer[i] - 1]);
                                                }

                                            }

                                        }

                                        
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值