一道IT行业c语言相关面试题。代码执行快慢问题。本人搞不懂他想面什么。。

第一种情况:for(i=0;i<N;i++){A;B;C;}第二种情况:for(i=0;i<N;i++){A;}for(i=0;i<N;i++){B;}for(i=0;i... 第一种情况:

for(i=0;i<N;i++)
{
A;
B;
C;
}
第二种情况:
for(i=0;i<N;i++)
{
A;
}
for(i=0;i<N;i++)
{
B;
}
for(i=0;i<N;i++)
{
C;
}
问题:
1,第一印象,这两种那个执行时间短?
2,举例让第二种情况比第一种情况执行时间短。
展开
 我来答
一个剃头匠zb0jN
2013-09-23 · 超过19用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:23.1万
展开全部
“小兔崽子,你这是小事吗?别说这事,就说你有这个想法也是死罪,你明白吗?两国皇族联姻,那岂是我们这些臣子能够插手的,我劝你还是赶紧离开吧!”许军忍不住再次骂了起来,如果不是看在我女儿的面子上,我早就踢飞你了!
楚飞、曹松、楚鸿、唐诗四人分别睡在了环形房子的外环,而曹颖、拉莎、雯雯、比克则是睡在了环形的内环,当然,他们彼此都是一个人一间屋子的,要不然比克的便宜就占大了,就是他愿意,恐怕几位女人都不会愿意的。
“是!我知道了!”一阵激动呀,雯雯跃下就向最后的三只绿色蛇头跑了过去。
“嗯!”肯定的点了点头,唐诗说道:“我们住店吧,去天才学院也不赶着这么一天两天的!”
不过气人归气人,眼下让许军一下子拿出这么多的财富来,他还真是办不到呢,盐察使总管的日子也不好过呀!
危机,楚飞不由感觉到了一丝来自死亡的威胁,当日既使他被费南制住也没有此时感觉这么大,这绝刀果然是非同凡响!
就这样,仍然是激动的看了回信,回信一封,由着楚飞捎回宫里去了。
“呵呵,小飞子,当然不怕,你要是想看,尽管过来一观便是!”笑了笑,香妃一点收起来的意思都没有。
随着一股让人心颤的强大气息传来,楚飞他们都是忍不住一惊,不出所料,这果然又是一位圣级强者呀!
追问
老兄的答案是不明觉厉啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亥凝思3q
2013-09-24 · TA获得超过313个赞
知道小有建树答主
回答量:400
采纳率:14%
帮助的人:172万
展开全部
如果 没有判断的话,第一个效率高点
如果有判断的话,第二个效率高点。

for(i=0;i<N;i++)
{
a++;//A 、B、C 三个条件
b++;
c++;
}
这样第一个结构明显会快点。

如果
for(i=0;i<N;i++)
{
if(condition A) action1 ;//A 、B、C 三个条件
else if(condition B) action2;
else (condition c)action3;
}
这样的话,第二个效率会高点。

主要是系统执行代码时,计算机执行各个代码消耗的时间和逻辑切换
更多追问追答
追问
国内知名IT公司硕士面试题,不会就是这个东西吧。。很好奇
追答
这个在很多编码规范和代码优化中有提及的,这个确实考虑了程序的运行效率。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2013-09-24 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3669万
展开全部
  1. 普通来说第一个程序执行时间短,因为第二个需要顺序执行三次循环,多了两次循环变量的加1计算;

  2. 假设A、B、C三部分的计算结果互不相关,运行代码的CPU有并行能力或具备多核,可以设置优化编译选项,令编译器生成并行执行代码,这样执行起来反而会比程序一效率高、时间短。

更多追问追答
追问
假如说不考虑多核、并行、编译器优化等因素,单纯的从语言角度来分析的话,是不是意义不大啊?
还要举出一个例子让第二种比第一个效率高的。
-----------------------------
我简单的试了一下,A、B、C不相干的话,加上优化选项,编出的汇编代码是一样的。
追答
如果汇编语句中有RPT即循环语句的话,只要A、B、C是足够简单的语句(一句汇编即可完成),那么得到的汇编将会比第一个少去了循环变量的操作而效率高。
如果第二个用寄存器级的循环变量定义,如register int i;而第一个用普通变量定义的话有可能会快。
代码执行效率的因素很多,这个无边际地假设没法满足需要。他们公司是搞哪些应用的? 需要考虑其业务范围来定向猜测答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freeeeeewind
2013-09-23 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1326万
展开全部
  1.   一般来说,第一种情况快;因为只有一个for,只需要循环一次;第二种情况需要循环3次(有3个for)

  2. 循环体 A ==> break; B==>break; C==>break;且N>=3时最快

    ====

面试这样的题目的目的嘛,也许是脑筋急转弯?

更多追问追答
追问
我也比较奇怪,加上附加条件的话那就随意举例子了吧?想谁快谁就快。。
他也没说是什么答案。。
说明:国内知名IT公司的。不是本人面,是别人。
追答
这个题目有点变态,呵呵,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呆ning
2013-09-23
知道答主
回答量:10
采纳率:0%
帮助的人:7.1万
展开全部
考你循环次数的判断呀!!!一般来说,第一种情况快;因为只有一个for,只需要循环一次;第二种情况需要循环3次(有3个for)!!!!!
追问
实际上没有本质上的快吧?忽略for那句,单看A、B、C。
假如N=10。
第一种是ABCABCABC、、共30次
第二种是AAAA...BBB...CCCC...共30次,
不是一样的么?不会有质的差距。。
还要举个例子要第二个比第一个快的。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式