下面的是两道面试题,小时候经常会看到这种类似的题目,但是用C语言实现,确实没那么容易想到,尤其是对我这种接触C语言仅仅一年的新人。

话不多说, 先上题...........

1、

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#include<stdio.h>int main()
{int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;for (a = 1; a <= 5; a++){for (b = 1; b <= 5; b++){for (c = 1; c <= 5; c++){for (d = 1; d <= 5; d++){for (e = 1; e <= 5; e++){if (((b == 1) + (a == 3) == 1) && ((b == 2) + (e == 4) == 1) && ((c == 1) + (d == 2) == 1) && ((c == 5) + (d == 3) == 1) && ((e == 4) + (a == 1) == 1)){printf("A:第%d名  B:第%d名  C:第%d名  D:第%d名  E:第%d名\n",a,b,c,d,e);}}}}}}system("pause");return 0;
}

2、

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。

#include<stdio.h>

int main()
{
 int  kill = 0;
 for (kill = 'a'; kill <= 'd'; kill++)
 {
  if ((kill != 'a') + (kill == 'c') + (kill == 'd') + (kill != 'd') == 3)
  {
   printf("杀手是%c\n",kill);
  }
 }
 system("pause");
 return 0;
}

看完之后,才发现并没有自己想的那么复杂。总是重复纠结一些问题,导致没有办法去想整体的方法。下面我就简单总结一下我解决这类实际问题的方法吧。

1、   让C语言解决实际问题,其实它是特别笨的,它不能够去分析逻辑找捷径(或者说我们还不会用它找捷径),所以   while   或    for    循环语句是必要的,它得把所有可能的情况一个一个列出来进行分析,看是否符合它的要求,再把符合要求的情况   printf  出来。

第一题,判断五个人的排名,那么输出结果必然是五个人,每个人的名次可能是1-5,那么就有25种情况,嵌套5个for循环语句可以实现这一功能。

第二题,需要判断谁是killer,很明显,程序只需要输入killer是谁就可以,也就是一个人,而其他的人就必然是无关人。因此,有4个嫌疑人,就需要4次循环,每次假设某一个人为killer,一次循环就可以做到列出谁是killer的所有情况。(由于四个人是abcd,所以定义了int型变量,从'a'到‘d’,字符型在内存里是以整型存储的。)

2、列出所有情况之后就要对所有情况进行判断,   if   语句,判断是否满足条件。到了第二个难点,条件怎么写。

第一题,五个人,每个人说的都有一真一假,也就是说,一个人说两句话只有一句是真话,“A选手说:B第一,我第三。”两个条件分别是(b==1)(a==3),中间怎么连接呢?

&&:都为真,结果为1            ||:有一个为真结果就为1   而 !考虑多种可能的话程序又会很复杂。这里用先+再判断是否==1,(b==1)+(a==3)==1,两个条件只有一个为真是结果为真,要求五个人说的话都满足,所以五个语句之间用&&连接。只要用循环语句列出来的情况同时满足五个人说的话(只有一句话是真话),则这种情况符合题意,直接输出,然后再次判断下一种情况。

第二题,四个人说的话只有三个人是真的,计算量相当于只有第一题的五分之一,只要判断四个满足三个条件,第四个不满足就可以,而不用多个用&&再连接。

if ((kill != 'a') + (kill == 'c') + (kill == 'd') + (kill != 'd') == 3)四个人说的四种情况相加,结果等于三时,说明只满足三个条件,第四个不满足,当某一个嫌疑人是killer时  if  语句成立,则该嫌疑人确定为killer,输出。

转载于:https://blog.51cto.com/whzhou/1722536

C语言实现小时候经常做的智力测试题相关推荐

  1. php7做了哪些优化,PHP语言学习之PHP7做了哪些优化

    本文主要向大家介绍了PHP语言学习之PHP7做了哪些优化,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 一  zval使用栈内存 在Zend引擎和扩展中,经常要创建一个PHP的变量,底 ...

  2. 不从事编程、学python有用吗-为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  3. 关于Go语言在服务端做Restful接口和socket通信

    转载自: http://xiaorui.cc/2014/10/25/%e5%85%b3%e4%ba%8ego%e8%af%ad%e8%a8%80%e5%9c%a8%e6%9c%8d%e5%8a%a1% ...

  4. 代写python作业 费用_代写dither method作业、代做python程序设计作业、代写python语言作业、代做Image Dithering作...

    代写dither method作业.代做python程序设计作业.代写python语言作业.代做Image Dithering作 日期:2019-10-07 04:39 ? Implement the ...

  5. 帮做Java_代写Heuristics、代做SAT、代写Java语言设计、代做Java代做Prolog|帮做Haskell程序...

    代写Heuristics.代做SAT.代写Java语言设计.代做Java代做Prolog|帮做Haskell程序Heuristics and OptimizationLab assignment #2 ...

  6. php 支付宝电脑支付宝,PHP语言学习之php 做支付宝电脑网站和app支付

    本文主要向大家介绍了PHP语言学习之php 做支付宝电脑网站和app支付,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 首先支付宝的文档真是看得头晕眼花,摸不着北的感觉,网上百度PHP ...

  7. 做自己的PHP语法解释器,PHP语言之自己动手做一个SQL解释器

    本文主要向大家介绍了PHP语言之自己动手做一个SQL解释器,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 这是从别的地方看到的,俺还不会写这么无聊的东西 class DB_text { ...

  8. 可以不学c语言直接学python_为什么你觉得C语言什么都不能做,学了没用?不可能的...

    对于大部分初学者,学习C语言的目的是希望做一名合格的程序员,开发出靠谱的软件来.但是学了C语言的基本语法后,发现只能开发"黑底白字"的DOS程序,完全没有漂亮的界面和生动的交互.于 ...

  9. C语言编程调试时,做完所有操作回车运行,调试框直接闪退。

    C语言编程调试时,做完所有操作回车运行,调试框直接闪退. 像下面的,运行后运行框闪一下就没了! #include "stdio.h" int main() {printf(&quo ...

最新文章

  1. 如何调用形参数组_函数的参数
  2. Android 程序 正确修改包名的方式(源代码)
  3. QT绘制具有向下钻取效果的园饼图
  4. Hadoop 05_MapReduce1.0
  5. 北航教授李波:说AI会有低潮就是胡扯,这是人类长期的追求
  6. ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap
  7. java数据结构创建树_在java中创建树数据结构?
  8. 入口函数ufusr()的示例 3.2.2
  9. mysql的游标处理_mysql 存储过程、游标及逐行处理的配合使用
  10. (二十)WebGIS中图层树功能的设计和实现
  11. txt.导入c语言,分求C语言问题解决——关于TXT文件导入(第二贴,能给出的这个100和另外的100一起拿走!)...
  12. 35+大龄程序员被清退?
  13. 最详细的Android SDK下载安装及配置教程
  14. PHP 第三方调用 UC_Center用户登录认证
  15. 现代 Nodejs ORM 库 Prisma 的使用详解
  16. 微信小程序红包 php,微信小程序实现红包功能(后端PHP实现逻辑)
  17. 阿里云 windows 服务器卸载阿里云盾
  18. Git教学资源,安装,关联账号,创建/关联/克隆库,版本回退,管理修改基本指令
  19. 把《把时间当作朋友》读薄
  20. 浅谈滴滴需求响应式公交背后的技术

热门文章

  1. 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
  2. lstm解决梯度消失
  3. 【青海】2021年下半年软考报考时间及通知
  4. 转载-如何做好项目的需求与业务调研▲▲▲
  5. Leaflet中加载Geoserver发布的WMS服务显示地图
  6. Winform中连接Mysql8并查询表中数据进行显示
  7. 信息系统项目管理师-项目成本管理考点笔记
  8. ElementUI的el-form怎样格式化布局
  9. 分布式系统的发展演变以及RPC简介
  10. RocketMQ的核心概念,一一梳理清楚