`
ruilin215
  • 浏览: 1159353 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

一道好玩儿的"移火柴"面试题

 
阅读更多

还记得小时候增加或移动一根火柴使等式成立的趣味题吗?嘿嘿,今天就和大家分享一道面试题,和“火柴题”很像,因此也更像是趣味题,做起来非常有意思O(∩_∩)O。废话不多说,直接上题:

/*
  下面这段C程序想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给出三种答案。
  
*/
int  n  =   20 ;
for ( int  i = 0 ; i < n; i -- )
{
     printf( " - " );
}

      
    题目很简单,相信任何一个程序员都是能看懂的,这题不考复杂的专业知识,当趣味题做就行了,注意题目要求“给出三种答案”,不好漏解就好。
   
    下面帖上我的解题思路:   

    简单分析一下程序不难看出,“粗心的程序员”把i++写成了i--,导致循环不能执行20次。因此,我们的最终目的就是让for循环执行20次。题目的要求是只能增加或修改一个字符,这么一来,可以修改的也只有"int n=20"和"for (int i=0;i<n;i--)"这两行了。简单尝试一下修改n的数值,很快发现行不通,所以 解题的关键就是在for循环条件里下功夫

    首先我们尝试一下修改"int i=0"中的i值,由于要同时满足i<20和i-20>=20,即40<=i<20,显然不可能。

    接着,尝试修改"i<n"这个条件表达式,稍作思考,我们发现如果给i前面加个符号,变成"-i<n",也就是"i>-20",那么每次循环依次是0>-20,-1>-20 ... -19>-20正好能运行20次,符合题意!这样,第一种解法就出来了:

1  int  n  =   20 ;
2  for ( int  i = 0 - i < n ; i -- )
3  {
4       printf( " - " );
5  }


    再看看修改"i--"有没有希望,改成i++显然是不行了,那改一下变量呢?n--?竟然是可以的!每次循环的条件为0<20,0<19 ... 0<1,同样是20次循环,太神奇了! 这题告诉我们for(int i=0; i<n; n--)也是能做n次循环的 ,虽然我们平常几乎不这么写,因为n往往是不可变的(比如特定数组的长度,容器的size等)。解法二:

1  int  n  =   20 ;
2  for ( int  i = 0 ; i < n; n -- )
3  {
4       printf( " - " );
5  }


    前两种解法总体上还是挺容易想到的,第三种就要绕一些了,我也是想了半天(笨啊o(>﹏<)o)。回到修改"i<n"上,由于在c语言中非0即true,任何一个int值都是可以当布尔值来使的,因此可以试着把"i<n"换成数值,比如i+n,i-n,i*n等等,而i+n恰好符合题意(很诡异的说~)解法三:

1  int  n  =   20 ;
2  for ( int  i = 0 ;  i + n ; i -- )
3  {
4       printf( " - " );
5  }


    好了,这题基本做完了,不知道还有木有别的解法,有的话给我留言哈O(∩_∩)O

4
7
分享到:
评论
2 楼 smiky 2011-07-26  
不错 ,只想到了前面两种
1 楼 shenliu 2011-07-26  
有点意思~~

相关推荐

    巧移火柴棒练习题 (二年级)-二年级数学小棒题.docx

    巧移火柴棒是一种经典的数学智力游戏,适合于低年级学生锻炼思维灵活性和逻辑推理能力。这类题目通常涉及数字和图形的变换,要求通过移动、添加或移除火柴棒来达成特定的目标,如使等式成立、形成新的图形或数字。 ...

    巧移火柴棒答案-火柴数学题.docx

    "巧移火柴棒答案-火柴数学题.docx" 本资源摘要信息主要围绕火柴游戏和数学题目展开,涉及到数学思维、几何知识和逻辑思维等多方面内容。下面是对标题、描述、标签和部分内容的详细解析: 标题:巧移火柴棒答案-...

    巧移火柴棒练习题二年级-.pdf

    巧移火柴棒练习题二年级-.pdf

    巧移火柴棒教学设计.docx

    巧移火柴棒教学设计 本资源是关于巧移火柴棒教学设计的教学资源,旨在通过火柴棒摆出数字图形和巧移火柴棒等活动,培养学生动手能力,丰富想象能力。下面是该资源的详细知识点: 一、活动目的 * 培养学生动手能力...

    巧移火柴棒游戏训练方法及训练题库.docx

    随着教育领域对培养综合能力的重视,巧移火柴棒游戏因其能提升逻辑思维、数学能力和问题解决能力而受到越来越多的关注。本篇文章将详细介绍巧移火柴棒游戏的训练方法,并深入探讨训练题库的运用,旨在帮助玩家在娱乐...

    巧移火柴棒答案-火柴数学题.doc

    巧移火柴棒答案-火柴数学题 本资源是关于火柴数学游戏的答案和方法的集合,涉及到智慧思维、逻辑思维和数学思考。火柴数学游戏是一种趣味性强的数学游戏,通过移动火柴棒, players可以解决数学问题和逻辑题目。 ...

    巧移火柴棒练习题集(二年级)~二年级数学小棒题.doc

    巧移火柴棒是一种锻炼逻辑思维和数学技巧的趣味题型,主要针对低年级学生,旨在提高他们的数学理解和创新思维。这些题目要求在保持火柴棒数量不变的情况下,通过移动火柴来改变数字或图形,使得等式成立或达成特定...

    巧移火柴棒练习题二年级-二年级数学小棒题.doc

    巧移火柴棒是一种经典的数学智力游戏,适合二年级学生进行练习,以提升逻辑思维和问题解决能力。这种游戏的基本规则是通过移动火柴棒来改变数字或图形,使之满足特定条件,例如使等式成立、形成特定图案或达成某种...

    小学一年级下奥数专题—移火柴棒-一年级火柴棍.docx

    小学一年级的奥数专题——移火柴棒,是一种锻炼孩子逻辑思维和空间想象能力的趣味数学活动。这种问题通常涉及到图形的变化和等式的调整,旨在引导孩子们通过改变火柴棒的位置,来解决数学问题。 首先,我们要理解移...

    小学数学数学故事思维乐趣移火柴

    标题中的“小学数学数学故事思维乐趣移火柴”是指一种教育方法,旨在通过数学故事和游戏,激发小学生对数学的兴趣,特别是培养他们的逻辑思维能力。其中,“移火柴”是一种经典的数学智力游戏,通常用于训练学生的...

    小学幼升小面试试题汇总.pdf

    移动火柴改变小鱼方向这一题,则是对孩子逻辑思维和问题解决能力的考察。此外,通过排列四幅图讲故事,孩子们可以锻炼他们的想象力和表达能力,而数学题则涉及到等量关系的理解,这对于培养孩子的数学概念至关重要。...

    巧移火柴棒游戏训练方法与训练试题(库).doc

    巧移火柴棒游戏是一种既简单又充满挑战的智力游戏,它通过一系列富有变化的关卡,锻炼玩家的空间想象力、数学思维和逻辑推理能力。游戏的过程就是玩家通过移动火柴棒来解决各种数学问题和图形变换,不仅提升了玩家的...

    巧移火柴棒答案.doc

    巧移火柴棒答案.doc 本文档为一份关于数学游戏的文件,包含多种数学游戏和例题,旨在提高学生的数学思维能力和逻辑思维能力。 游戏一:变换等式 游戏目标:通过挪动两根火柴棒,使等式变得正确。 游戏规则: 1....

    世界500强面试题(情商篇).pdf

    ### 世界500强面试题(情商篇)——知识点解析 #### 1. 击鼠标比赛 **问题描述:** 拉尔夫、威利和保罗进行击鼠标比赛。拉尔夫10秒击10次,威利20秒击20次,保罗5秒击5次。假设击打频率保持不变,询问是否平手,...

    巧移火柴棒答案.pdf

    火柴游戏是一种经典的智力挑战,通常涉及通过移动火柴来改变数学表达式或者构造几何图形。这个游戏的关键在于理解和运用火柴移动的三种基本操作:拿去、添上和移动。 1. **拿去**:这一操作是将火柴从当前的位置...

    巧移火柴棒教学设计(汇编).pdf

    巧移火柴棒作为一种富有创造性的数学游戏,不仅仅是一项简单的手工活动,更是一种深层次思维训练的途径。通过设计一系列与火柴棒相关的教学活动,不仅可以吸引学生的注意力,还能够有效地提高他们的动手能力和想象力...

    火柴棒数学趣味题.docx

    火柴棒数学趣味题是一种富有创意的数学思维游戏,它不仅能够让玩家在娱乐中感受到数学的乐趣,而且能够有效地提升玩家的空间想象力和逻辑思维能力。通过对火柴棒的移动、旋转和组合,参与者可以直观地感受到数学概念...

    小学一年级下奥数专题—移火柴棒-一年级火柴棍.doc

    小学一年级的奥数专题“移火柴棒”是一种有趣且富有挑战性的数学游戏,旨在培养孩子们的逻辑思维、观察力和创新能力。在这个专题中,孩子们需要通过移动火柴棒来改变图形或者使得数学等式成立,以下是这个专题涵盖的...

    火柴棍游戏题(奥数).docx

    这种题目要求玩家对火柴棍的使用有较高的灵活性,可能的解决方案是将一根火柴从“田”字的中心移开,形成三个独立的1x1正方形。 在解决火柴棍游戏题目时,可以采取画图和试错的方法。先在纸上画出火柴棍构成的图形...

Global site tag (gtag.js) - Google Analytics