c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)
(第一篇博文)
今天在一个交流群里见他们无聊,然后找到之前收藏的一些c语言题目放出去想让他们做,结果反倒是自己不会做,于是花了很多时间去想。
原题:张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。现在问:这三人中到底谁说的是真话,谁说的是假话?
其实问题本身并不难,只是一开始想多了,陷入死循环。
那这个问题的突破口在哪里呢?
不管谁说谎,每个人都有两个状态 真和假
由此,我们就可以确定,我们有循环嵌套:
for(var zhangsan=0;zhangsan<=1;zhangsan++)
{
for(var lisi=0;lisi<=1;lisi++)
{
for(var wangwu=0;wangwu<=1;wangwu++)
{
}
}
}
这时候,我们只要对zhangsan lisi wangwu 这三个变量进行逻辑判断即可
逻辑怎么判断呢?
根据题目,我们一段一段的分析:
张三说李四在说谎 : 假设zhangsan 就是正确的,那么有 zhangsan == !lisi
李四说王五在说谎 :同理,有 lisi == !wangwu
王五说张三和李四都在说谎 : 有 wangwu ==((!zhangsan)&&(!lisi))
根据数学带入解方程的方法,我们其中的两个两个相互代入,得到两个式子,得到:
zhangsan == wangwu
lisi ==((!zhangsan)&&(!lisi))
那我们的结果只要符合上边两个要求即可:
if((zhangsan == wangwu)&&(lisi ==((!zhangsan)&&(!lisi))))
最后的结果:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
for(var zhangsan=0;zhangsan<=1;zhangsan++)
{
for(var lisi=0;lisi<=1;lisi++)
{
for(var wangwu=0;wangwu<=1;wangwu++)
{
if((zhangsan==((!zhangsan)&&(!lisi)))&&(zhangsan==wangwu))
alert("张三:"+zhangsan+" 李四:"+lisi+" 王五:"+wangwu);
}
}
} </script>

ps:虽然说现在做些网站和写些小软件是没问题的,但是由于c# 和 java 都是高级的语言,而且实际使用的时候也很少要这样判断逻辑的,
很久不做这些,脑子真的会生锈的。
c语言训练题:关于张三李四王五说谎的问题(此处用javascript实现)的更多相关文章
- X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp
0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- 二级C语言真题笔记
二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() { short i ...
- 日常 java+雅思+训练题1
今天主要学了一些类似c中的一些语句,java也是一样类似的,只有一些点需要稍微注意一下,一些语句是新增的需要知道. 完完全全新学的知识就是class和instance的区别.如何创建实例.数据的封装. ...
- Python语言上机题实现方法(持续更新...)
Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...
- 训练趣题:黑与白 有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。(此处用javascript实现)
今天的题目原题是这样的: “ 黑与白:有A.B.C.D.E五人,每人额头上都帖了一张黑或白的纸.五人对坐,每人都可以看到其它人额头上的纸的颜色.五人相互观察后,A说:“我看见有三人额头上帖的是白纸,一 ...
- #018 C语言刷题 素数问题
今天做题学会了一个求素数的方法 总分 13 孪生素数 相差为2的两个素数称为孪生素数.例如,3与5,41与43等都是孪生素数.设计程序求出指定区间上的所有孪生素数对.区间上限和下限由键盘获取. 程序运 ...
- C语言扩展题
1.使用cmake来创建c语言工程 2.使用gcc来编译源代码 3.下载redis,并且编译运行redis(注:redis目前是c语言编写的,而且是主要是linux平台,在windows平台编译比较麻 ...
- C语言100题集合004-统计各个年龄阶段的人数
系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...
随机推荐
- 替换SQL Server字段中的换行符,回车符
replace(string_expression , string_pattern , string_replacement) 第一个参数:要查找的字段. 第二个参数:要查找的字符. 第三个参数:要 ...
- [转]NHibernate之旅(9):探索父子关系(一对多关系)
本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHiberna ...
- 进军es6(1)---初识es6
es6,全称ECMAScript6(又名es2015).何为ECMAScript?我们常说的Javascript和它又有什么联系呢? 阮一峰老师有一句话描述的比较准确:“ECMAScript是Java ...
- Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
我们需要先准备好2个apache的类: 上一个博客文章只讲了最简单的入门,现在来开始慢慢加深. 先过渡一下:只上传一个file项 index.jsp: <h2>用apache的工具处理文件 ...
- strcpy,memcpy,内存块重叠
前段时间准备面试,看了一些库函数的实现,在看到memcpy时,发现有处理source和destination所指内存有重叠的情况,而strcpy没有,特别模仿库函数写了这个函数,并进行了测试.以下是具 ...
- JavaScript高级程序设计51.pdf
(续上篇) 模拟鼠标事件 var btn=document.getElementById("myBtn"); //创建事件对象 var event=document.createE ...
- 18. 4Sum
#include <string>#include <stack>#include <vector>#include <map>#include < ...
- HDU 1568 Fibonacci 数学= = 开篇
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1568 分析:一道数学题 找出斐波那契数列的通项公式,再利用对数的性质就可得到前几位的数 斐波那契通项公 ...
- Hibernate查询之HQL查询
转自:http://blog.csdn.net/xiao_yi/article/details/1733342 Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(H ...
- Codeforces 114A-Cifera(暴力)
A. Cifera time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...