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

笔试题求解

楼主denferyan()2006-10-23 20:49:03 在 C/C++ / C语言 提问

1,要对绝对地址0x100000赋值,我们可以用  
  (unsigned   int*)0x100000   =   1234;  
  那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?  
  2,已知一个数组table,用一个宏定义,求出数据的元素个数  
  #define   NTBL  
  3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3); 问题点数:0、回复次数:31Top

1 楼denferyan()回复于 2006-10-23 20:53:59 得分 0

第一个这样行吗?       (*   (void   (*)(   ))0x100000   )   (   );  
  Top

2 楼Kusk(Kusk)回复于 2006-10-23 21:00:49 得分 0

2.   #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))  
   
  3.      
  #include   <stdio.h>  
   
  int   main()  
  {  
  int   n   =   1000,   zero   =   0;  
  while   (n   >   0)  
  {  
  zero   +=   (n   /=   5);  
  }  
  printf("%d\n",   zero);  
  return   0;  
  }  
   
  答案249.Top

3 楼shkliu(康康)回复于 2006-10-23 22:16:52 得分 0

说说1000!(1000!阶乘1*2*。。。*1000)?  
  Kusk   怎么算的:)  
  Top

4 楼mu_yang(穆扬)回复于 2006-10-23 22:18:46 得分 0

(unsigned   int*)0x100000   =   1234;  
  --------------------------------------  
  *(unsigned   int*)0x100000   =   1234;  
   
  天壤之别  
  Top

5 楼myrene()回复于 2006-10-23 22:27:19 得分 0

首先要将0x100000强制转换成函数指针,即:  
  (void   (*)())0x100000  
  然后再调用它:  
  *((void   (*)())0x100000)();  
  Top

6 楼mu_yang(穆扬)回复于 2006-10-23 22:31:00 得分 0

#include   <stdio.h>  
   
  int   main()  
  {  
  int   n   =   1000,   zero   =   0;  
  while   (n   >   0)  
  {  
  zero   +=   (n   /=   5);  
  }  
  printf("%d\n",   zero);  
  return   0;  
  }  
   
  答案249.  
  ----------------------------------------  
  不会吧?  
  会得到这个答案么?Top

7 楼myrene()回复于 2006-10-23 22:31:56 得分 0

对于第一题,可以看看这个啊   :http://www.tongyi.net/develop/C/1001122.htmlTop

8 楼Kusk(Kusk)回复于 2006-10-23 22:48:03 得分 0

回复人:shkliu(康康)   (   一级(初级))   信誉:100   2006-10-23   22:16:00   得分:0  
  ?    
  说说1000!(1000!阶乘1*2*。。。*1000)?  
  Kusk   怎么算的:)  
  -----------------------------------------------------  
  求n的阶乘后面有多少个0,就是求n的阶乘里一共有多少对2与5的因子。因为它们乘起来就会制造  
  一个末尾0,而除此之外无论什么素因子相乘都不会改变尾0的个数。  
  而自然数中含2因子的数一定比含5因子的数多,所以只要求出含5因子的数是多少就可以了。  
  因为每隔5个数就多出一个5的因子,每隔25个数就在原基础上又多一个5的因子,每隔125个数  
  又在原基础上多出一个……所以,  
  n阶乘含5因子数=[n   /   5]   +   [n   /   25]   +   [n   /   125]   +   ...   +   [n   /   (5   ^   x)]   +...           (原因你可以想一下)  
  其中[x]表示取整。只要累加到[n   /   (5   ^   x)]为0时就可以结束了。  
  因此我们做的只是一个简单的求和。程序就是根据这个原理实现的。Top

9 楼justrun2005(机枪)回复于 2006-10-24 00:17:59 得分 0

markTop

10 楼denferyan()回复于 2006-10-24 11:35:44 得分 0

第二题  
  #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))  
  ________________________________________________  
   
  这样不行,如果table是多维数组怎么办?Top

11 楼superarhow(苏泊尔耗)回复于 2006-10-24 11:44:41 得分 0

这样不行,如果table是多维数组怎么办?  
  多维数组也一样啊Top

12 楼superarhow(苏泊尔耗)回复于 2006-10-24 11:45:45 得分 0

哦table[0]会出错Top

13 楼blue_zyb()回复于 2006-10-24 13:41:40 得分 0

to:   superarhow(苏泊尔耗)    
  这样不行,如果table是多维数组怎么办?  
  ------------------------  
  多维数组也一样啊  
  ------------------------  
  哦table[0]会出错  
   
   
  确实是多维数组也一样啊,C里面的多维数组就是一维数组(数组的数组)嘛,你说的table[0]会出错是什么意思?  
  Top

14 楼leibo3008(渔民)回复于 2006-10-24 13:42:10 得分 0

markTop

15 楼cy2005abc(天空与草原)回复于 2006-10-24 13:52:54 得分 0

Kusk(Kusk)   (   )真是高手Top

16 楼michaelysj(其实我很傻...)回复于 2006-10-24 14:21:07 得分 0

markTop

17 楼hansin(将冰山劈开)回复于 2006-10-24 15:15:06 得分 0

怎么星星都不近来啊Top

18 楼lurenfu(具有中国特色的社会主义初级阶段,一百年不变)回复于 2006-10-24 15:41:37 得分 0

Kush明显求错了,还高手?Top

19 楼pcboyxhy(-273.15℃)回复于 2006-10-24 15:47:55 得分 0

#include   <stdio.h>  
   
  int   main(   void   )  
  {  
          int   n,   s=0;  
          scanf("%d",   &n);  
          while(n/=5)  
                  s   +=   n;  
          printf("%d\n",   s);  
  }  
  Top

20 楼blue_zyb()回复于 2006-10-24 15:59:06 得分 0

Kush明显求错了,还高手?  
  -----------------------  
  哪错了??Top

21 楼yeah123()回复于 2006-10-24 16:52:14 得分 0

DINGTop

22 楼maxiaotian(活着就好!)回复于 2006-10-26 11:42:47 得分 0

做个笔记  
  Top

23 楼morphymorphy(叔,人家还小啦~~ =_=)回复于 2006-10-26 14:27:30 得分 0

 
  2,已知一个数组table,用一个宏定义,求出数据的元素个数  
          #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))   一维数组这样做没有问题。。  
          多维肯定出错。。。  
   
    如:二维数组  
  #include   <stdio.h>  
  #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))  
  int   main(   void   )  
  {  
          unsigned   char   arr[100][100];  
          printf("%d\n",NTBL(arr));  
  }  
   
  结果输出是100。。。  
   
   
   
  Top

24 楼welfarefanwei(伟大)回复于 2006-10-28 16:06:41 得分 0

MarkupTop

25 楼abelchen()回复于 2006-10-28 18:57:46 得分 0

markTop

26 楼springlie(张白衣)回复于 2006-10-29 02:46:45 得分 0

2,已知一个数组table,用一个宏定义,求出数据的元素个数  
          #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))   一维数组这样做没有问题。。  
          多维肯定出错。。。  
   
    如:二维数组  
  #include   <stdio.h>  
  #define   NTBL(table)   (sizeof(table)   /   sizeof(table[0]))  
  int   main(   void   )  
  {  
          unsigned   char   arr[100][100];  
          printf("%d\n",NTBL(arr));  
  }  
   
  结果输出是100。。。  
  ////////////////////////////////////////////////////////////  
  这个肯定有问题,当多维数组时,sizeof(table[0])也是一个数组指针,而且sizeof(table[0][0])也是……  
  其实方法真简单呢  
  直接#define   NTBL(table)   sizeof(table)就OK了  
  Top

27 楼springlie(张白衣)回复于 2006-10-29 12:47:39 得分 0

更正一下楼上,匆忙了  
   
  这个肯定有问题,当多维数组时,sizeof(table[0])也是一个数组指针,而且sizeof(table[0][0])也是……  
  其实方法真简单呢  
  直接  
  #define   strtype   char//或者别的类型  
  #define   NTBL(table)   sizeof(table)/sizeof(strtype)就OK了  
  Top

28 楼morphymorphy(叔,人家还小啦~~ =_=)回复于 2006-10-29 13:23:14 得分 0

楼上的。。  
  问题是:条件只有一条   "已知一个数组table",     类型尚未定义。。知道类型就简单了。。Top

29 楼morphymorphy(叔,人家还小啦~~ =_=)回复于 2006-10-29 13:24:47 得分 0

更正一下。。。“类型尚未定义”为“类型任意”Top

30 楼f_acme(沧海一声笑)回复于 2006-10-29 23:07:07 得分 0

首先要将0x100000强制转换成函数指针,即:  
  (void   (*)())0x100000  
  然后再调用它:  
  *((void   (*)())0x100000)();  
  ---------------  
  编译时“非法的间接寻址”错误哦Top

31 楼springlie(张白衣)回复于 2006-10-30 01:03:07 得分 0

楼上,你是说在看不到source中内容,只给一个加工好的数组的基地址,让求元素个数吗?  
  晕,总共有sizeof(strlen(str))大的空间,可以有N种分法啊。每种类型都有一种分法,有些输出可能不合理,但不能说不可能啊  
   
  所以,我觉得,直接不知道类型,没有办法做Top

相关问题

关键词

得分解答快速导航

  • 帖主:denferyan

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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