“火柴棍式”程序员面试题
有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。
下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给出三种答案。
int n = 20; for(int i = 0; i < n; i--){ printf("-"); }
不要以为这题不是很难,我相信你并不那么容易能找到3种方法。我觉得,如果你能在10分钟内找出这三种方法,说明你真的很聪明,而且反应很快。当然,15分钟内也不赖。不过,你要是30分钟内找不到三种方法,当然,不说明你笨了,最多就是你的反应还不够快。嘿嘿。就当是玩玩吧。
下面是我的答案:
//第一种解法:在for循环中给n加一个负号 for(int i = 0; i < -n; i--) //第二种解法:把 n 初始化成 -20 int n = -20; //第三种解法:把for循环中的 i 初始化成40 for(int i = 40; i < n; i--)
不过,我要告诉你,以上这些答案都不对(我就知道你会偷看答案的),不过,顺着这些思路走很接近了。呵呵。
下面是正确答案——
//第一种解法:在for循环中给 i 加一个负号 for(int i = 0; -i < n; i--) //第二种解法:在for循环中把 i-- 变成 n-- for(int i = 0; i < n; n--) //第三种解法:把for循环中的 < 变成 + for(int i = 0; i + n; i--)
其它相关的变种题如下:
- 通过修改、增加一个字符,让其输出21个减号
- 通过修改、增加一个字符,让其只输出1个减号
- 通过修改、增加一个字符,让其不输出减号
(全文完)
(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)
《“火柴棍式”程序员面试题》的相关评论
不能增加那应该可以减少吧
看错了,原来是“只能” 汗,视力混乱了
i>n
i-n
i^n 么??
看答案喽
看看想对没……
第一行代码写错了 你初始化的就是-20
害我想半天也就想到把 擦
上面说的 把小于 改 大于
题面有错吧?n=20才对?
看看答案
@Lyd
同问
>, -, ^
看看答案
reply
回复可见……
@陈皓
如果答案正确,那么题目不对了.应该是n=20;
如果题目不该,那么一种方法是把”小于”改成”大于”,第二种是”小于”改成”减号”,第三种是”小于”改成”异或”.
^ 不行吧 0^ -20 =0?
要是 n%i 到时可以的 但是改的字符多了
回复可见..犀利啊。
lz是想看看自己的活跃读者数么?
初始化就-20….
難怪怎麼看都無解….
看看正确答案是什么
亲自打了边 代码试论 一下 , i^N 是可以的。 也就是3中方法 其实都是在 改 for 循环中的判读。
第3个太难想了 没这么用过 唉
reply
坑爹的回复可见
in 就好了…
我要看看····
看答案的
想不出来,看看答案。
就找出一种
题目是不是错了,“n=-20”?
i > n
i – n
想不出来了……
算你会耍花招~
参考看看吧
看答案喽
这…
把””就OK啊。
汗,这都过滤。我说把小于号改成大于号。
看一下答案。
我也想看答案!!
kandauan
@Lyd
呵呵,我就想到前两种,
看答案~~~~
偷看答案
i n 可以。我看看别人的答案
我要看看
还有一种将i 小于n改成i大于n就可以了。
看看答案
真的回复可见么?
我觉得for循环第二个表达式该是”-i<n":)