当前位置: 代码迷 >> C语言 >> 公司给的几道C语言方面的题目
  详细解决方案

公司给的几道C语言方面的题目

热度:267   发布时间:2007-07-06 13:33:23.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编辑过]


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
这简直是考英语啊
----------------解决方案--------------------------------------------------------

题目不难啊,,,,


----------------解决方案--------------------------------------------------------
以下是引用w362034710在2007-7-6 18:04:25的发言:

题目不难啊,,,,

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


----------------解决方案--------------------------------------------------------
LS速度往往都是牺牲空间来得到的....所以要考虑一下空间问题``
  当你空间没有了```你再快的速度都没用了../

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
?????我说的速度可不是用宏来替换函数
好的算法,可以减少,甚至取消循环,速度自然就快了,和空间有什么关系???
最多多了十几二十行代码,最后编译的时候,还不知道会不会多出几K出来


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

----------------解决方案--------------------------------------------------------
  相关解决方案