一道关于逻辑推理的C语言编程题

甲乙丙丁四个人看比赛,甲说:冠军不是A就是B.乙说:冠军绝不是C.丙说:DEF都不是冠军。丁说:冠军是D.E.F中的一个。如果这四人中只有一个人猜对,判断谁是冠军。... 甲乙丙丁四个人看比赛,甲说:冠军不是A就是B.乙说:冠军绝不是C.丙说:DEF都不是冠军。丁说:冠军是D.E.F中的一个。
如果这四人中只有一个人猜对,判断谁是冠军。
展开
 我来答
小张haha
2012-04-20 · TA获得超过1005个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:119万
展开全部
这个得用枚举法做:把各种可能的情况都考虑到,并对全部可能结果逐一进行判断,过滤掉那些不符合要求的,保留符合要求的结果,这种方法叫枚举算法(Enumerative algorithm)
设定冠军为X(1<=X<=6)
甲乙丙丁四个人的话可以用逻辑表达式表示如下:
甲:X=1 OR X=2
乙:X<>3
丙:X<=3
丁:X>=4
追问
谢谢你哦,请问具体的写法思路能给我讲一下吗
追答
给你一段程序,自己研究,不懂再追问
For x = 1 To 6
s = 0
If x = 1 Or x = 2 Then s = s + 1
If x 3 Then s = s + 1
If x = 4 Then s = s + 1
If s = 1 Then Print "冠军是 ", x
Next
匿名用户
2012-04-21
展开全部
#include "iostream"
using namespace std;

void main()
{
int w, j, y ,b ,d; //w代表冠军,j,y,b,d分别代表甲乙丙丁
for (w = 1; w < 7; ++w)//ABCDEF分别用1、2、3、4、5、6表示
{
j = (w == 1 || w == 2);
y = (w != 3);
b = (w != 4 && w != 5 && w != 6);
d = (w == 4 || w == 5 || w == 6);
if (j + y + b + d == 1)
{
cout << w;
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenqa08
推荐于2016-11-21 · TA获得超过275个赞
知道答主
回答量:105
采纳率:0%
帮助的人:108万
展开全部
#include <stdio.h>

int main(void)
{
const char players[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
int w; /* w = winner */
int jia, yi, bing, ding;

for (w=0; w<6; w++) {
jia = (w==1 || w==2);
yi = (w != 3);
bing = (w!=4 && w!=5 && w!=6);
ding = (w==4 || w==5 || w==6);
/* one of them is right */
if (jia+yi+bing+ding == 1) printf("Winner is %c\n", players[w]);
}

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式