笔试题求解
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




