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和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...
随机推荐
- BZOJ3323: [Scoi2013]多项式的运算
3323: [Scoi2013]多项式的运算 Time Limit: 12 Sec Memory Limit: 64 MBSubmit: 128 Solved: 33[Submit][Status ...
- spoolsv.exe 报错,无法打印
在使用打印机过程中突然出现spoolsv.exe应用程序错误,内存不能written•••,检查打印驱动,打印机设置选项无法打开.怀疑是病毒所致,升级杀毒软件后安全模式下杀毒后没有发现病毒,重启后还是 ...
- C# Sending data using GET or POST ZZ
In this short article, I'll show you how to send data to a website from a C# application using GET o ...
- 全新ASP框架——IISNODE介绍
Asp是一门经典的动态网页编程语言,通常使用vbscript或者Jscript脚本来实现.一个好的框架,可以帮助您更加快速地使用Asp来完成您的网站开发任务.而Asp框架的终结者——IISNODE框架 ...
- SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0
最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面 ...
- mao/reduce实现求平均值
import java.io.*; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io. ...
- window7电脑设置好了,却无法远程?
设置远程连接: 步骤:右键[我的电脑]-->[属性] 点击[远程设置],然后设置如下: 在 cmd 中 通过 [ipconfig]命令查看IP: 以上设置好了,发现仍无法远程?解决办法如下: 电 ...
- 数据库分页--MySQL数据库
关于实现MySQL分页的最简单的方法就是利用mysql数据库的limit函数:limit [offset,] rows SELECT * FROM 表名称 LIMIT M,N limit 子句可以被用 ...
- Caffe 在 Ubuntu 中安装
Ubuntu Installation General dependencies sudo apt-get install libprotobuf-dev libleveldb-dev libsnap ...
- Testing和Instrumentation(转)
Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架.尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面 ...