还记得小时候增加或移动一根火柴使等式成立的趣味题吗?嘿嘿,今天就和大家分享一道面试题,和“火柴题”很像,因此也更像是趣味题,做起来非常有意思O(∩_∩)O。废话不多说,直接上题:
/*
下面这段C程序想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给出三种答案。
*/
int n = 20;
for(int i=0; i { printf("-"); } 题目很简单,相信任何一个程序员都是能看懂的,这题不考复杂的专业知识,当趣味题做就行了,注意题目要求“给出三种答案”,不好漏解就好。 下面帖上我的解题思路: 简单分析一下程序不难看出,“粗心的程序员”把i++写成了i--,导致循环不能执行20次。因此,我们的最终目的就是让for循环执行20次。题目的要求是只能增加或修改一个字符,这么一来,可以修改的也只有"int n=20"和"for (int i=0;i 首先我们尝试一下修改"int i=0"中的i值,由于要同时满足i<20和i-20>=20,即40<=i<20,显然不可能。 接着,尝试修改"i 1 int n = 20; 2 for(int i=0; -i 3 { 4 printf("-"); 5 } 再看看修改"i--"有没有希望,改成i++显然是不行了,那改一下变量呢?n--?竟然是可以的!每次循环的条件为0<20,0<19 ... 0<1,同样是20次循环,太神奇了!这题告诉我们for(int i=0; i 1 int n = 20; 2 for(int i=0; i 3 { 4 printf("-"); 5 } 前两种解法总体上还是挺容易想到的,第三种就要绕一些了,我也是想了半天(笨啊o(> <)o)。回到修改"i 1 int n = 20; 2 for(int i=0; i+n; i--) 3 { 4 printf("-"); 5 }