题目原文如下:
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; }