⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhi_li_ti.cpp

📁 该程序解决一个古老的智力题
💻 CPP
字号:
#include "math.h"
#include "stdio.h"

/*奇怪的问题
请回答下面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  */

//题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;
}


void main()
{
	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]);
												}
											}
										}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -