题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话,现在请根据这些信息,写一个程序来确定到底谁是凶手。
解: 首先,分析一下题目,嫌疑犯必定为A,B,C,D中其中的一人,因此我们可以定义一个变量 murder 来存储凶手,凶手从A开始到D结束,逐一判断条件是否成立,在判断时可以用ASCII值 从 65到68 依次表示凶手。找到符合条件的,即为凶手。
以下为c语言程序: #include <stdio.h>
int main()
{
int murder;
for (murder='A'; murder<='D'; murder++)
{
if (((murder!='A')+(murder=='C')+(murder=='D')+(murder!='D')) == 3) //三真一假,在if语句的,括号里为真结果为1,要是假结果为0。因此if括号 后面若成立,必定为三真一假,即必定等于3.
{
printf("murder is %c\n",murder); //由于最终要输出凶手,为一个字符,%c可用输出字符
}
}
return 0;
}