其他分享
首页 > 其他分享> > 1.2 最佳赛车问题

1.2 最佳赛车问题

作者:互联网

1.2 最佳赛车问题

题目描述

四名专家对四款赛车进行评论。

专家A说:2号赛车是最好的。

专家B说:4号赛车是最好的。

专家C说:3号不是最佳赛车。

专家D说:专家B说错了。

事实上只有一款赛车最佳,且只有一名专家说对了,其他三人都说错了。请编程输出最佳车的编号,以及哪位专家所对了。

分析

题目要求

请编程输出最佳车的编号,以及哪位专家所对了。

​ 从题目要求中大致可以确定,在实现中需要一个变量记录说对了的专家编号,一个变量记录最佳赛车编号。

已知条件

事实上只有一款赛车最佳,且只有一名专家说对了,其他三人都说错了。

​ 用4个变量分别记录四个专家说的是否正确,将四个变量的和是否等于1作为判断条件之一。

设计思路

  1. 使用一个变量theBestCar,表示最佳赛车号,取值1,2,3,4使用循环依次讨论分别。
  2. 用四个变量wordA,wordB,wordC,wordD表示四名专家说的是否正确,1为正确,0为错误。
  3. 判断
  • 如果存在wordA ,wordB ,word C,wordD的和为1,且满足 最佳赛车数量为1的情况,则输出结果。
  • 否则无解

转化为C语言

专家A说:2号赛车是最好的。

专家B说:4号赛车是最好的。

专家C说:3号不是最佳赛车。

专家D说:专家B说错了。

wordA = (2 == theBestCar);

wordB = (4 == theBestCar);

wordC = (3 != theBestCar);

wordD = !wordB;

代码实现

程序

#include <stdio.h>
#include<stdlib.h>

int main()
{
    /**
     * theBestCar   最佳赛车编号
     * wordA        A是否说对
     * wordB        B是否说对
     * wordC        C是否说对
     * wordD        D是否说对
     * sum          四人说对的个数和
     * flagCar      最佳赛车标记,初始值为0
     * count        最佳赛车数量,初始值为0
    */
    int theBestCar;
    int wordA,wordB,wordC,wordD;
    int sum;
    int flagCar = 0,count = 0;

    /********************************************************
     * 依次列出最佳赛车的可能,对四人说的话进行判断
    ********************************************************/
    for (int iTemp = 1; iTemp <= 4 ; iTemp++) {
        theBestCar = iTemp;
        wordA = (theBestCar == 2);
        wordB = (theBestCar == 4);
        wordC = (theBestCar != 3);
        wordD = !wordB;
        sum = wordA + wordB + wordC + wordD;
        /***********************************************************
         * 判断,只有一个人说对了
         *      记录最佳赛车编号
         *      最佳赛车数量count++
         * ********************************************************/
        if (sum == 1) {
            count++ ;
            flagCar = iTemp;
        }
    }

    /***********************************************************
     * 判断
     * 有且只有一辆最佳赛车?
     *      是--》输出结果
     *      否--》无解
     * ********************************************************/
    if (count == 1) {
        theBestCar = flagCar;
        wordA = (theBestCar == 2);
        wordB = (theBestCar == 4);
        wordC = (theBestCar != 3);
        wordD = (theBestCar != 4);
        if (wordA) {
            printf("A 专家说的对\n");
        } else if (wordB) {
            printf("B 专家说的对\n");
        } else if (wordD) {
            printf("C 专家说的对\n");
        } else {
            printf("D 专家说的对\n");
        }
        printf("%d 号赛车是最好的\n",flagCar);
    }else {
        printf("无解\n");
    }

    system("pause");
    return 0;
}

运行结果
在这里插入图片描述

标签:wordD,1.2,wordB,专家,最佳,赛车,theBestCar
来源: https://blog.csdn.net/Exception_122113/article/details/117391949