C语言急急急急急!

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:45:44
夏日炎炎,空调机走俏。在A、B、C、D、E共5家空调机厂质量评中各得第1、2、3、4、5名。评比前,大家都己经知道,E厂肯定不是第2名和第3名。5个厂的代表猜测评比名次:
A: E厂稳获第1名
B: 我厂可能获得第2名
C: A厂的质量最差
D: C厂的质量不是最好的
E: D厂会获得第1名
评比结果公布后发现,只有获得第1名和第2名的两个厂的代表猜对了。
请编程给出A、B、C、D、E这5个厂各是获得了第几名。
程序谢谢!

我就能像到这个方法,感觉很笨,求高手指点
答案有6个结果
代码:
/*
若第一或第二
a (a==2&&e==1)
b (b==2)
c ((c==1||c==2)&&a==5)
d ((d==1||d==2)&&c!=1)
e (e==2&&d==1)
*/
#include<stdio.h>

void main()
{
int a,b,c,d,e;

for(a=1;a<=5;a++)
for(b=1;b<=5;b++)
if(b!=a)
for(c=1;c<=5;c++)
if(c!=a&&c!=b)
for(d=1;d<=5;d++)
if(d!=a&&d!=b&&d!=c)
for(e=1;e<=5;e++)
if(e!=2&&e!=3&&e!=a&&e!=b&&e!=c&&e!=d)
if(((a==2&&e==1)&&(b==2))||((a==2&&e==1)&&((c==1||c==2)&&a==5))||((a==2&&e==1)&&((d==1||d==2)&&c!=1))||((a==2&&e==1)&&(e==2&&d==1))||((b==2)&&((c==1||c==2)&&a==5))||((b==2)&&((d==1||d==2)&&c!=1))||((b==2)&&(e==2&&d==1))||(((c==1||c==2)&&a==5)&&((d==1||d==2)&&c!=1))||(((c==1||c==2)&&a==5)&&(e==2&&d==1))||(((d==1||d==2)&&c!=1)&&(e==2&&d==1)))
printf("a=%d\tb=%d\tc=%d\td=%d\te=%d\n",a,b,c,d,e);
}

#include <