C语言帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:11:00
根据如下题目叙述,编程解决之
4名赛车手对4辆赛车进行了如下评价:
A说:2号赛车是最好的;
B说:4号赛车是最好的;
C说:3号赛车不是最好的;
D说:B的判断是错的,
事实上只有一辆赛车被评为最佳,而且只有一名车手说对了,请编程得出最佳赛车的车号以及那位车手猜对了。
程序的设计思路是:

这个的思想是这样的,这是一个循环和一个判断叠加的一个大循环。
先是进入一个循环(几号车最好)
IF
1号车是最好的,那么,与四个人的论述比较,结果就是A错B错C对D错,
2号车是最好的,那么,A对B错C对D对,
然后一次循环3号车和4号车。
每一次循环结束以后都进行一次判断(几个人说对),
如果符合一个对一个车是最好的则打印,跳出循环,如果不符合继续循环。

假设B说的是对的,D反对,那么B和D只有一个对的.因为车手中只有一名车手是对的,那么否定A,可以断定2号车不是最好的.同时也否定了C的说法,那么C说的3号车不是最好的是错的,所以D说的是对的,同时3号车是最好的.

所以设定的初始条件有只有一个人说的是对的,只有一辆车是最好的.
所以应该从车手的角度来判断问题,否定上面的答案.
第一步:如果A是正确的,那么C和D的说法也是正确的,所以不能满足只有一个人说的是对条件,所以A肯定不正确,也就排除了A和2号车.
第二步:如果B是正确的,那么D的说法是错误.但C的说法是正确的,不满足设定的条件,那么排除了B和4号车
第三步:如果C是正确的,那么B或者D是正确,不能满足上述条件,所以C说的是错误,但是可以确定3号车;
第四步:如果D是正确的,由于排除了ABC的错误说法,所以D的说法是正确的.

四个循环

所以从数据结构的角度出发,定义好数据结构,明确各个关系非常重要,只有这样才能有一个明确的判断

这是一个逻辑推理题,首先分析题目所给的四个条件:

C说:3号赛车不是最好的; —》剩下1,2,4有可能是最好的
D说:B的判断是错的,
B说:4号赛车是最好的; —》剩下1,2可能是最好的
A说:2号赛车是最好的;
只有一辆赛车被评为最佳,而且只有一名车手说对了 -》所以A说对了

最后得知答案:2号赛车手是最好的

程序设计的思路:

1,设计一个邻接矩阵,存储已知条件,作为输入;
例如:int answer[猜测人编号][车手