我们先把文字语言转换为我们的编程语言:
对甲来说:(a==1 && c!=3) || (a!=1 && c==3)
对乙来说:(b==3 && c!=2) || (b!=3 && c==2)
对丙来说:(a==2 && c!=3) || (a!=2 && c==3)
对丁来说:(c==1 && d!=3) || (c!=1 && d==3)
由于他们的话当中,只有一半是对的,不能多也不能少,所以只要这四个语句同时成立就可以找到答案
所以实现程序如下:
#include "stdio.h"
main()
{
int a,b,c,d;
int output = 1;
for(a=1;a<5;a++)
{
for(b=1;b<5;b++)
{
for(c=1;c<5;c++)
{
for(d=1;d<5;d++)
{
if(((a==1 && c!=3) || (a!=1 && c==3))&&((b==3 && c!=2) || (b!=3 && c==2))&&((a==2 && c!=3) || (a!=2 && c==3))&&((c==1 && d!=3) || (c!=1 && d==3)))
{
output = 0; //用来控制是停止循环
break; //如果找到合适的给我停止循环,而不是continue;因为我们都知道,结果就只有一个,所以不必要把它全部执行完,下同
}
else
continue;
}
if(output == 0)
break;
else
continue;
}
if(output == 0)
break;
else
continue;
}
if(output == 0)
break;
else
continue;
}
printf("比赛的结果是:\n");
printf("\t a 是第 %d 名 !\n",a);
printf("\t b 是第 %d 名 !\n",b);
printf("\t c 是第 %d 名 !\n",c);
printf("\t d 是第 %d 名 !\n",d);
getchar();
}
执行结果是:
比赛结果是:
a 是第 3 名 !
b 是第 3 名 !
c 是第 3 名 !
d 是第 3 名 !
不要觉得奇怪,他们并列第三是有可能的,因为题中没有说明比赛只有他们四人参加!!
不知给你这样的大幅,不知你明不明白,你最好自己上机运行一下,不懂再找我,还有,我对你说声sorry,其实我昨天就看到你的信息了,不过我咱天没空给你答复,不好意思!
我后来想一下,好像你的题目有些问题,因为它最终的答案不是唯一的,a 可能是第三,也可能是第四,不过我想这个编程的思路是对的!!!你再看看吧
温馨提示:答案为网友推荐,仅供参考