趣味c 编程之查找凶手


今天,遇到一个有趣的c编程题,本以为编程只能用来解决计算机上的一些问题,没想到在生活中也能运用的如此恰到好处。首先来看看这道题题目。

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。

A说:不是我。

B说:是C

C说:是D

D说:C在胡说

已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手

起初看这道题的时候,稍微觉得有点绕,但是细细一想,也能够想出凶手。根据层层的逻辑,我们可以看出里面作为凶手的那个人,就是说了谎的人,对于初涉C的我来说,该怎样将这个题目用C语言表达出来呢。

来,现在我们来一起仔细看看题目先。这道题的重点在于,4个人,三个人说了真话,凶手一个人说了假话,那么我们可以通过对每一个人与四个人的证词相比较,如果有一个人得到了三个证词的肯定,那凶手就是他了。

既然这样,我们便开始来写程序

首先C语言的老套路

#include <stdio.h>     // C语言的老套路

 

 

int main()

{

char killer;          // 定义一个凶手,因为证人是A,B,C,D,

// 所以选用字符型char

int i;

for (i = 0; i < 4; i++)    // 因为要对每个嫌疑人进行证词比对,所以来个循环

{

killer = 'A' + i;  // 作为字符A,加上i的值就可以成为B,C,D

// 这就是我们最关键的地方了,我们将每一个嫌疑人的话与他本身相匹配,假设A说的是假话,那其他人说的都是真话,然后验证其他嫌疑人的证词是否都为真,如果不是,那A不是凶手。依次,对每一个人进行轮番的验证,就能找出凶手。

int ret = (killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D');    

if (ret == 3)  // 找到凶手

{

printf ("凶手是 %c\n", killer);   // 打印出凶手的名字

break;

}

}

return 0;

}

 

是不是感觉很有趣,凶手就这样轻易被找了出来。由此,让我也知道,c语言的运用,是用来解决实际问题,并不是简简单单的来解决一些计算机上的计算而已。这让我更加觉得C语言是一门很实用的语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值