一道简单的面试题,你能给出几种解法?

愤怒的晃晃 发布于 2014/03/08 23:12
阅读 628
收藏 5

这是周五碰到的一面试题,当时只给出了两种解法(其实现在也想不出第三种)。更多解法等待各位大牛挖掘。

如下述代码,本意是输出连续的20个“*”,但该段代码因为开发人员的疏忽不能满足要求。请添加或修改该代码段中的一个字符,使其满足连续输出20个“*”的要求。至少给出三种解法。


int n = 20;


for(int i = 0; i < n; i--){


  printf("*");


}

加载中
6
gnefil.nil
gnefil.nil

1 把i--变成n--

2 -i < n

3 把 i < n 变成 i + n, c语言里非零为真

本源
本源
答案三 长见识了 原来for的第二个表达式可以这样写 在自学php php也可以 哈哈
0
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非

不知道这种题目有什么意义。

原题i--要改成i++,算一种

直接输出20个*,算第二种

for改写成while,算第三种?和for又有什么本质区别呢

每次输出2个,输出20次,能不能再算一种

每次输出4个呢,哈哈

————————————修改

回复 @纠结名字 : 坑自己了,又看了遍,第一种把i=0改成i=40


ODMark
ODMark
。。不满足i < n条件,无输出。
纠结名字
只修改一个字符。。。你一个都不对,因为你也不细心。
0
ODMark
ODMark

引用来自“愚蠢的人类”的答案

不知道这种题目有什么意义。

原题i--要改成i++,算一种

直接输出20个*,算第二种

for改写成while,算第三种?和for又有什么本质区别呢

每次输出2个,输出20次,能不能再算一种

每次输出4个呢,哈哈

题目要求是添加或修改一个字符。
0
0
ODMark
ODMark

1、i--改成n--;

2、i<n改成-i<n;

3、i<n改成~i<n;


注:我用的是java。

ODMark
ODMark
回复 @gnefil.nil : 哦对,也没认真数,刚才验证了一下,原来~(-20) < 20 == true,导致多输出一个“*”。
gnefil.nil
gnefil.nil
~就输出21个了
0
lazyphp
lazyphp
这道题靠 细心啊。这种题还真难。
0
小瓜_2
小瓜_2
连续输出20个“*”,i<n改成~i<n输出21个也满足吧
0
王文峰
王文峰
1:i=40,2:n--,3:i<-n
王文峰
王文峰
修改编译器 对大于小于的编译判断 我那两个错的就对了
愤怒的晃晃
愤怒的晃晃
i = 40 的话,循环里面 i < n 的条件就不满足了嘛。 i< - n,循环的时候:0<-20 ? 看来哥们也是一个马虎眼哈!
Brin想写程序
Brin想写程序
对。程序员面试本质就考了一点智商。
0
愤怒的晃晃
愤怒的晃晃

引用来自“愚蠢的人类”的答案

不知道这种题目有什么意义。

原题i--要改成i++,算一种

直接输出20个*,算第二种

for改写成while,算第三种?和for又有什么本质区别呢

每次输出2个,输出20次,能不能再算一种

每次输出4个呢,哈哈

————————————修改

回复 @纠结名字 : 坑自己了,又看了遍,第一种把i=0改成i=40


i = 40,也满足不了要求吧,老兄
返回顶部
顶部