| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1793 人关注过本帖
标题:一道H3C的C/C++面试题
只看楼主 加入收藏
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:10 
一道H3C的C/C++面试题
做了一份H3C的面试题,里面第三道题是这样的,我做不来啊。请各位帮忙解答下。
说出以下两个小程序的优缺点:
if(condition)
{
    for(int i=0;i<=n;++i)
    {
        doSomething();   
    }
}
else
{
    for(int i=0;i<=n;++i)
    {
        doSomething();   
    }
}






for(int i=0;i<=n;++i)
{
    if(condition)
        doSomething();
    else
        doOtherthing();        
}
搜索更多相关主题的帖子: 优缺点 
2011-04-07 16:52
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
我的想法是第一个程序if只执行一次,第二个程序if执行n+1次。
2011-04-07 17:04
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:3 
第二个程序比第一个程序做了N-1次判断,并且前者老用逻辑判断,打断了for循环的“流水线”作业,使得编译器不能对循环做优化处理,降低了效率,如果N非常大,最好用第二个。如果很小,效果不明显。当差别不明显的时候用第一个程序,因为写法简洁。

我的地盘
2011-04-07 18:01
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
林锐的《高质量c&c++编程》里面写到,而且有很多经典的题目和例子,呵呵,有空你去看看吧。真的能把你提高一个档次

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-04-07 18:51
ljxksy566
Rank: 1
等 级:新手上路
帖 子:4
专家分:9
注 册:2009-10-29
收藏
得分:3 
可以减少循环次数,提高程序运行效率.
2011-04-07 19:15
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
不知道是不是楼主笔误。但如果第一个不是 doOtherthing() 的话,编译器应该会把 if 和 else 优化没,纯比第二个强。而且这两者就没什么对比性了。
2011-04-08 08:35
xiaoji756
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2011-3-29
收藏
得分:3 
我觉的2个程序的效果不同 就没有可比性
2011-04-08 14:15
Lyone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:99
专家分:195
注 册:2010-12-7
收藏
得分:3 
除了LS各位说的if的次数以外。个人还觉得,如果condition这个量在程序运行时能够被其他地方的代码修改,那么第一个程序可以实时的进行判断,而第二个程序却能保证for循环的稳定。
2011-04-08 14:22
ma12230
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2011-4-8
收藏
得分:3 
小结一下——
代码编写量看:第一个代码行数多,第二个少
执行效率来看:第一个效率高,只进行了一次if判断,第二个进行了n次if判断
实时运行角度:如果有上下文,第一个能够根据实时更新的condition运行不同的分支,第二个不具备此功能(不考虑多线程和中断的情况下)
2011-04-08 15:23
zhaxi0927
Rank: 2
来 自:buct
等 级:论坛游民
帖 子:13
专家分:15
注 册:2011-4-7
收藏
得分:3 
回复 8楼 Lyone
个人比较赞成8楼得观点,两段代码不一致。比如说楼主的程序中n=10,而condition是(i<5)。

Be strong!
2011-04-08 20:01
快速回复:一道H3C的C/C++面试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036619 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved