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

奇怪的问题
请回答下面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、付费专栏及课程。

余额充值