题目原文如下:
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
解题代码如下:
#include<stdio.h>
#include<math.h>
#define ABS(x,y) (x>y?x-y:y-x)
int Question01(void);
int Question02(void);
int Question03(void);
int Question04(void);
int Question05(void);
int Question06(void);
int Question07(void);
int Question08(void);
int Question09(void);
int Question10(void);
int InitAnswet(void);
int FindAnswet(void);
int UpdataAnswet(void);
int PrintAnswet(void);
typedef int(*Question)(void);
int answer[10];
Question question[10];
int main()
{
InitAnswet();
FindAnswet();
//PrintAnswet();
return 0;
}
int PrintAnswet(void)
{
int i;
for(i=0;i<10;i++)
{
printf("%c ",answer[i]);
}
printf("\n");
return 1;
}
int InitAnswet(void)
{
int i;
for(i=0;i<10;i++)
{
answer[i]='A';
}
question[0]=Question01;
question[1]=Question02;
question[2]=Question03;
question[3]=Question04;
question[4]=Question05;
question[5]=Question06;
question[6]=Question07;
question[7]=Question08;
question[8]=Question09;
question[9]=Question10;
return 1;
}
//ACBCACDDBA
int FindAnswet(void)
{
int i;
do
{
for(i=0;i<10;i++)
{
if(question[i]()!=1)
{
break;
}
}
if(i==10)
{
PrintAnswet();
//break;
}
} while (UpdataAnswet()==1);
return 1;
}
int UpdataAnswet(void)
{
int i;
answer[9]+=1;
for(i=9;i>=1;i--)
{
if(answer[i]>'D')
{
answer[i]='A';
answer[i-1]+=1;
}
}
if(answer[0]>'D')
{
return 0;
}
return 1;
}
int Question01(void)
{
int i;
for(i=0;i<10;i++)
{
if(answer[i]=='A')
{
break;
}
}
if(i==answer[0]-'A')
{
return 1;
}
return 0;
}
int Question02(void)
{
int i,j,idx,a;
a=answer[1];
for(i=0,j=0;i<9;i++)
{
if(answer[i]==answer[i+1])
{
j++;
idx=i;
}
}
if(j==1)
{
if(a=='A'&&idx==4)
{
return 1;
}
if(a=='B'&&idx==5)
{
return 1;
}
if(a=='C'&&idx==6)
{
return 1;
}
if(a=='D'&&idx==7)
{
return 1;
}
}
return 0;
}
int Question03(void)
{
int i,a,j,idx;
a=answer[2];
if(a=='A'&&a==answer[3])
{
return 1;
}
if(a=='B'&&a==answer[8])
{
return 1;
}
if(a=='C'&&a==answer[7])
{
return 1;
}
if(a=='D'&&a==answer[1])
{
return 1;
}
return 0;
}
int Question04(void)
{
int i,j,a;
a=answer[3];
for(i=0,j=0;i<10;i++)
{
if(answer[i]=='A')
{
j++;
}
}
if(j==5&&a=='A')
{
return 1;
}
if(j==4&&a=='B')
{
return 1;
}
if(j==3&&a=='C')
{
return 1;
}
if(j==2&&a=='D')
{
return 1;
}
return 0;
}
int Question05(void)
{
int i,a,j,idx;
a=answer[4];
if(a=='A'&&a==answer[0])
{
return 1;
}
if(a=='B'&&a==answer[1])
{
return 1;
}
if(a=='C'&&a==answer[2])
{
return 1;
}
if(a=='D'&&a==answer[3])
{
return 1;
}
return 0;
}
int Question06(void)
{
int i,a=0,b=0,c=0,d=0;
for(i=0;i<10;i++)
{
if(answer[i]=='A')
{
a+=1;
}
if(answer[i]=='B')
{
b+=1;
}
if(answer[i]=='C')
{
c+=1;
}
if(answer[i]=='D')
{
d+=1;
}
}
if(a==c||a==d||(a!=b&&a!=c&&a!=d))
{
return 1;
}
return 0;
}
int Question07(void)
{
int a=answer[6];
if((ABS(a,answer[7]))==('D'-a))
{
return 1;
}
return 0;
}
int Question08(void)
{
int i,j;
for(i=0,j=0;i<10;i++)
{
if(answer[i]=='A')
{
j++;
}
}
if(j==(answer[7]-'A'))
{
return 1;
}
return 0;
}
int Question09(void)
{
int i,j,f=0;
for(i=0,j=0;i<10;i++)
{
if(answer[i]!='A')
{
j++;
}
}
if(j==2||j==3||j==5||j==7&&answer[8]=='B')
{
return 1;
}
if(j==4||j==6||j==8||j==9||j==10&&answer[8]=='A')
{
return 1;
}
if(j<5&&answer[8]=='C')
{
return 1;
}
if(j==9||j==0||j==1&&answer[8]=='D')
{
return 1;
}
return 0;
}
int Question10(void)
{
return 1;
}