CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

大家来看看华为的二面题.答对了基本上进华为没问题了!

楼主zzfly82(阿飞)2005-08-17 20:14:47 在 VC/MFC / 网络编程 提问

原题:  
      求两个数组的整数乘法,即a,b两个数组都是两个正整数.数组的低位a[0],b[0]为整数的个位,以此类推。数组长度为30。  
   
  (提示:这道题没有啥提示信息(考的全是潜在的东西),它是二面题,大家研究研究,传说考了很多内容.看看你的思维水平.过了基本上就通过了.哈哈)  
  问题点数:20、回复次数:28Top

1 楼windcsn(向所有的朋友学习!)回复于 2005-08-18 08:50:00 得分 0

不想进华为Top

2 楼younggle(洋溢)回复于 2005-08-18 08:56:03 得分 0

像小学的时候立一个竖式算一算就行了。  
  一样的道理。Top

3 楼singohwang(Pro.X)回复于 2005-08-18 08:59:59 得分 0

晕死!Top

4 楼zzfly82(阿飞)回复于 2005-08-18 09:17:43 得分 0

呵呵,不要以前题真的很简单,写个C算法出来看看呀,暗藏杀机呀!!Top

5 楼wshcdr(dd)回复于 2005-08-18 09:24:07 得分 0

把两个数组分别读进两个__64类型的数  
  两数相乘  
  最后把结果用数组显示  
  Top

6 楼nlstone(天外流星)回复于 2005-08-18 09:43:34 得分 0

算竖式或如楼上所说,均正解,so   easy的题目Top

7 楼fdsfdsfsdf53()回复于 2005-08-18 11:03:32 得分 0

用传说中的高精度乘法不就可以解决了吗?做过Top

8 楼nanfeng231(木木)回复于 2005-08-18 11:10:53 得分 0

大数乘法,怎么会问这样的问题呢!Top

9 楼lovelife_821106(明天吧)回复于 2005-08-18 12:11:12 得分 1

用数组保存中间结果和最终结果Top

10 楼YanDong_8212(谢科)回复于 2005-08-18 12:31:09 得分 1

面试主要看基础,做不做得出来并不是关键。  
  Top

11 楼xiaodongdehome(骆驼 Msn : greatcampo@hotmail.com)回复于 2005-08-18 17:23:59 得分 1

写一个有   局限性   的算法:    
  ---   局限在   该算法   中   数组的个数   最多为   ((UINT)0xffffffff   /   81)   个;  
  ---   当然也可以改进成   不局限   个数的算法.  
      UINT   a[30],   b[30];  
      UINT   t[30];     //临时结果  
      UINT   r[60];     //存放结果  
      ::ZeroMemory(r,   60   *   sizeof(int));  
      for(int   i=0;   i<30;   i++)  
      {  
  ::ZeroMemory(t,   30   *   sizeof(int));  
  for(int   j=0;   j<30;   j++)  
  {  
      t[j]   =   a[i]   *   b[j];                                    
  }  
   
  for(int   k=0;   k<30;   k++)  
  {  
              r[i   +   k]   +=   t[k];    
  }  
      }  
   
      for(int   i=0;   i<59;   i++)  
      {  
          r[i   +   1]   +=   r[i]   /   10;  
  r[i]   =     r[i]   %   10;  
      }Top

12 楼xiaodongdehome(骆驼 Msn : greatcampo@hotmail.com)回复于 2005-08-18 17:58:47 得分 5

改进的:  
   
  const   UINT   MAXSIZE   =   30;     //   可已任意设置  
      BYTE   a[MAXSIZE],   b[MAXSIZE];  
      BYTE   t[MAXSIZE];     //临时结果  
      BYTE   r[MAXSIZE   *   2];     //存放结果  
   
      ::ZeroMemory(r,   MAXSIZE   *   2   *   sizeof(BYTE));  
   
      for(BYTE   i=0;   i<MAXSIZE;   i++)  
      {  
  for(BYTE   j=0;   j<MAXSIZE;   j++)  
  {  
      t[j]   =   0;  
      t[j]   =   a[i]   *   b[j];                                    
      ASSERT(t[j]   >   =   0);  
      ASSERT(t[j]   <=   81);  
  }  
   
  for(BYTE   k=0;   k   <   MAXSIZE;   k++)  
  {  
                        r[i   +   k]   +=   t[k];    
                        r[i   +   k   +   1]   +=   r[i   +   k]   /   10;  
      r[i   +   k]   =   r[i   +   k]   %   10  
  }  
      }Top

13 楼sbnth(金鳞岂非池中物,一遇风云便化龙)回复于 2005-08-18 19:16:35 得分 0

too   easy,没意思啊Top

14 楼alec626(月吻长河Blog:spaces.msn.com/filebase)回复于 2005-08-20 17:53:59 得分 0

怎么不考除法?  
  乘法也太直接了吧Top

15 楼lianglp(寻找黄金分割点)回复于 2005-08-20 18:18:08 得分 0

呵呵,华为有这么好吗!Top

16 楼lianglp(寻找黄金分割点)回复于 2005-08-20 18:25:35 得分 0

unsigned   __int64   nResult   =   0;  
   
  _strrev(a_array);  
  _strrev(b_array);  
   
  nResult   =   strto64(a_array)   *   strto64(b_array);  
   
  搞定了。  
  Top

17 楼alphapaopao(炮炮)回复于 2005-08-21 14:56:13 得分 0

有什么大不了的呢?Top

18 楼superpingl(赖平)回复于 2005-08-21 15:15:40 得分 2

做对题目不是关键  
  关键是你做对题目的方式  
  这个题目可以有很多种方法解决  
  不要把这样的题目看成考试,答案不是唯一的。Top

19 楼xialin168(林)回复于 2005-08-21 19:55:49 得分 1

算法最重要Top

20 楼w7x(舍我其谁)回复于 2005-08-22 09:48:56 得分 1

以前我写过,任意长度因式相乘,用数组保存结果。Top

21 楼foxqwx(努力学习C/C++)回复于 2005-08-22 16:03:26 得分 1

答案不重要,关键看解题思路和过程Top

22 楼dirdirdir3(风)回复于 2005-08-22 20:21:40 得分 0

_64的可能会溢出吧,30位的整数应该大于_int32的。两个相乘的话可能超Top

23 楼dirdirdir3(风)回复于 2005-08-22 20:26:38 得分 2

是比较简单,要考也考个30000个数以上的,考最小时间,呵呵。Top

24 楼gohappy_1999(碧水蓝天)回复于 2005-08-22 22:23:16 得分 0

溢出的问题怎么解决Top

25 楼dirdirdir3(风)回复于 2005-08-22 22:32:36 得分 1

用数组来做。Top

26 楼xiaodongdehome(骆驼 Msn : greatcampo@hotmail.com)回复于 2005-08-23 11:49:04 得分 2

欠套一次循环,   理论上不会出现溢出   的算法  
  {  
      const   UINT   MAXSIZE   =   3000;     //   可已任意设置  
      BYTE   a[MAXSIZE],   b[MAXSIZE];  
      BYTE   t[MAXSIZE];     //临时结果  
      BYTE   r[MAXSIZE   *   2];     //存放结果      
   
      ::ZeroMemory(r,   MAXSIZE   *   2   *   sizeof(BYTE));  
      for(BYTE   i=0;   i<MAXSIZE;   i++)  
      {  
  for(BYTE   j=0;   j<MAXSIZE;   j++)  
  {  
      t[j]   =   0;  
      t[j]   =   a[i]   *   b[j];                                    
      ASSERT(t[j]   >=   0);  
      ASSERT(t[j]   <=   81);  
      //  
      r[i   +   j]   =   r[i   +   j]   +   t[j];    
                        r[i   +   j   +   1]   =   r[i   +   j   +   1]   +   r[i   +   j]   /   10;  
      r[i   +   j]   =   r[i   +   j]   %   10;  
  }  
      }    
  }Top

27 楼xiaodongdehome(骆驼 Msn : greatcampo@hotmail.com)回复于 2005-08-23 12:30:33 得分 0

o,   搞笑了!  
  把   两次循环里的   BYTE   改成   UINT,   就   OK   了!  
  ^_^!Top

28 楼koskinen(因果关系)回复于 2005-08-23 15:06:33 得分 2

用数组,算出高位分配一个内存保存,考的是思维Top

相关问题

  • 华为面试题
  • 华为面试题
  • 华为面试题
  • 华为面试题
  • 请教:华为面试题
  • 昨天华为面试题
  • 一道华为面试题
  • “深圳华为”面试题,请各位解答?
  • 要去华为面试c++,请教华为的面试题型!
  • 一道华为面试题(在线等)!!!!!!!!!!!!!!!

关键词

  • 算法
  • 数组
  • 华为
  • 题
  • 乘法
  • 整数
  • 看看
  • 结果
  • uint

得分解答快速导航

  • 帖主:zzfly82
  • lovelife_821106
  • YanDong_8212
  • xiaodongdehome
  • xiaodongdehome
  • superpingl
  • xialin168
  • w7x
  • foxqwx
  • dirdirdir3
  • dirdirdir3
  • xiaodongdehome
  • koskinen

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo