| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2615 人关注过本帖
标题:公司给的几道C语言方面的题目
只看楼主 加入收藏
chinahgcq
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-4
收藏
得分:0 

1. Assume that your CPU does not have multiply and divide units. You can not use function in C that will not use multiply, divide and modulo operators. Write the following programs:

a) multiply any given number by 7

b) divide any given number by 7

2. Make sure that you write the most optimized code, and give full description of any potential errors that can happen using your function.


For 1(a)
typedef ElemType int;
#define NUM 7;
ElemType Multiply(ElemType Num,ElemType n)
{
ElemType Result;
for(int i=0;i<NUM;i++)
{
Result +=n;
}
return Result;
}

then the result is NUM*n,but this methord is not good,as it's not fast,lets try another one;

ElemType Multiply(ElemType NUM,ElemType n)
{
ElemType Result,n1,n2;
n1=n<<3; //that's n1=n*8;
n2=n; //that's n2=n*1;
Result=n1-n2; //that's Reuslt=n*8-n*1=7*n;

return Result;
}



For 1(b),it's the same

[此贴子已经被作者于2007-7-6 13:34:42编辑过]


2007-07-06 13:33
chinahgcq
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-6-4
收藏
得分:0 

以上的解决办法是位移运算,其实我觉得这样才是最快的


2007-07-06 13:42
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 

但是位运算有个问题,就是在32位机或是64位机上,得出来得结果是不一样得
你得我不知道会不会出现,我以前出现过


编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-06 15:08
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 

但是我认为既然方法已经和结果就一步之距了,那手算就行了,要电脑还干什么,就象微积分一样手算一样算的到,那还要电脑做近似做什么,我个人认为电脑就是计算的机器,当然不否认好的算法
一句话---好的算法和未知的结果----使用电脑才有意义.


偶是菜鸟鸟偶惧WHO?!!!!
2007-07-06 15:14
lzf0112
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2006-4-9
收藏
得分:0 
这简直是考英语啊
2007-07-06 15:46
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
收藏
得分:0 

题目不难啊,,,,

2007-07-06 18:04
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
以下是引用w362034710在2007-7-6 18:04:25的发言:

题目不难啊,,,,

难得在于高效,把你的算法贴出来,我们研究,学习下


编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-06 18:26
incoolwen
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-6-21
收藏
得分:0 
LS速度往往都是牺牲空间来得到的....所以要考虑一下空间问题``
  当你空间没有了```你再快的速度都没用了../

2007-07-06 19:03
talentzhu
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-5-12
收藏
得分:0 

讨论了那么多,怎么好像还是没人帮他做出来呀.

2007-07-06 19:27
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
?????我说的速度可不是用宏来替换函数
好的算法,可以减少,甚至取消循环,速度自然就快了,和空间有什么关系???
最多多了十几二十行代码,最后编译的时候,还不知道会不会多出几K出来


而且,你要是在两个软件或设备之间选择,你肯定先问那个速度更快(至少大多数人是这样的),至于空间,350M,和360M,谁会先考虑这个

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-06 19:28
快速回复:公司给的几道C语言方面的题目
数据加载中...
 
   



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

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