南京高端网站制作公司哪家好,神起网络公司,雅布设计公司,网站建设设计官网一、题目
日本某地发生了一件谋杀案#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说#xff1a;不是我。B说#xff1a;是C。C说#xff1a;是D。D说#xff1a;C在胡说
已知3个人说了真话#xff0c;1个人说的是假话。
现在…一、题目
日本某地发生了一件谋杀案警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词:
A说不是我。B说是C。C说是D。D说C在胡说
已知3个人说了真话1个人说的是假话。
现在请根据这些信息写一个程序来确定到底谁是凶手
二、解题代码
#include stdio.hint main()
{char killer;for(killerA; killerD; killer)//巧妙地利用ASCII 从A-D进行循环和比较{//下面分别对应每个人都供词 不是A 是C 是D 不是Dif (((killer!A) (killerC) (killerD) (killer!D))3) //这里等于3表示 有三个人说了真话{printf(%c是凶手\n,killer);break;}}return 0;
}
三、解题思路
定义一个字符变量 killer用于表示可能的凶手。使用 for 循环从字符 A 开始逐个遍历到字符 D。在每次循环中根据不同的 killer 值进行条件判断。条件判断表达式 ((killer!A) (killerC) (killerD) (killer!D)) 是一个求和表达式用于判断有多少个人说了真话。A1010, B1011, C1100, D1101
(killer!A) 表示如果 killer 不等于字符 A则为真1否则为假0。(killerC) 表示如果 killer 等于字符 C则为真1否则为假0。(killerD) 表示如果 killer 等于字符 D则为真1否则为假0。(killer!D) 表示如果 killer 不等于字符 D则为真1否则为假0。
如果求和表达式的结果等于3表示有三个人说了真话。在满足条件的情况下使用 printf 函数打印出 killer 的值并通过 break 语句跳出循环。程序执行完毕返回0表示成功结束。
由于字符在内存中以ASCII码的形式存储因此可以利用字符的ASCII码值进行比较。在这段代码中通过遍历字符 A 到 D每次将 killer 设置为一个字符并根据条件判断表达式来确定凶手的身份。