锐捷笔试题,欢迎来讨论

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:55:13
主  题:  锐捷笔试题,欢迎来讨论
作  者:  tesling (特赦无罪)
等  级:
信 誉 值:  100
所属社区:  C/C++ C语言
问题点数:  50
回复次数:  19
发表时间:  2005-10-26 19:35:55
有好多,下面几个是个人觉得有点意思的
1,要对绝对地址0x100000赋值,我们可以用
(unsigned int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
2,已知一个数组table,用一个宏定义,求出数据的元素个数
#define NTBL
3,求1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);
回复人: tesling(特赦无罪) ( ) 信誉:100  2005-10-26 19:40:00  得分: 0
1,2两个题我给出了答案是这样的
1,goto (void *)0x100000
2,#define NTBL (sizeof(table)/sizeof(table[0]))
也可写成 ,#define NTBL (((void*)(&table+1)-table)/sizeof(table[0])-1)
3题是最后一个,我做的时候已经要交卷了,没做。
Top
回复人: tesling(特赦无罪) ( ) 信誉:100  2005-10-26 19:42:00  得分: 0
我感觉我的答案都有问题
第一个题目,我还不大理解,只知道goto是在代码区转移移的
第二个题目,要是table是一维数组我做的应该没什么问题,要是二维呢,多维呢,那我只求出了维数,没求出元素数。。这些都是出来时想起来的,当时怎么就没想到。。。。。。。。。
Top
回复人: Featured(我握着爱情的门票静静排队……) ( ) 信誉:100  2005-10-26 21:11:00  得分: 0
1 错了
要跳到绝对地址是0x100000去执行,这个很难的。
goto都是跳转到相对地址,你那个答案更是牛头不对马嘴
只有修改ESS:ESP
Top
回复人: xiaocai0001(萧筱雨) ( ) 信誉:100  2005-10-26 21:22:00  得分: 0
第三个是数2,5的倍数的个数
1000! = 1*2*3*...*1000
= 1*3*5*7*...*999 * 2^500 * (1*2*3*...*500)
=...
这样一直分解下去.
Top
回复人: codearts(代码艺术) ( ) 信誉:98  2005-10-26 21:27:00  得分: 0
第二道题应该楼主所写的吧?
第一道题我也不知道, 等高手解答
Top
回复人: wuming2003(无名) ( ) 信誉:100  2005-10-26 21:35:00  得分: 0
1.void (*fun)(void) = 0x100000;
fun();
Top
回复人: zxhbin() ( ) 信誉:100  2005-10-26 21:46:00  得分: 0
强顶
一下!
Top
回复人: youngdreamer2008(羊追馍) ( ) 信誉:100  2005-10-26 21:51:00  得分: 0
mark!校习
Top
回复人: chenxixia(晨曦) ( ) 信誉:100  2005-10-26 22:14:00  得分: 0
1000!末尾有多少个0,就是求1~1000所有数中含有多少2和5啊
Top
回复人: chenxixia(晨曦) ( ) 信誉:100  2005-10-26 22:15:00  得分: 0
所有数的因子含有多少2和5
Top
回复人: foochow(恰似你的温柔) ( ) 信誉:100  2005-10-26 22:34:00  得分: 0
又是这些题目,楼主这个是校园招聘还是社会招聘啊??
Top
回复人: zl0126() ( ) 信誉:100  2005-10-27 00:11:00  得分: 0
mark
Top
回复人: AntonlioX(做人要厚道) ( ) 信誉:100  2005-10-27 00:19:00  得分: 0
什么时候考的阿?
Top
回复人: power77() ( ) 信誉:88  2005-10-27 09:07:00  得分: 0
mark 一下
Top
回复人: xuelong_zl(点雨点[好想村里的MM们............]) ( ) 信誉:100  2005-10-27 09:08:00  得分: 0
第一个是
*((void (*)())0x100000)();
Top
回复人: xuelong_zl(点雨点[好想村里的MM们............]) ( ) 信誉:100  2005-10-27 09:10:00  得分: 0
第三个
为什么要做呀??直接数出来不行吗??
这个题就是个BT,没意思
Top
回复人: youngdreamer2008(羊追馍) ( ) 信誉:100  2005-10-27 09:11:00  得分: 0
void main(void)
{
int count0=0;
for(int i=5;i<=1000;i+=5)
{
for(int j=i;j%5==0;j/=5)count0++;
}
printf("%d",count0);
}
答案是:249
思路是不用素数,只用5,因为所有的0数都可以分解为5的个数(因为偶数的个数要明显多于5的个数),如250可以分解为5*5*5*2(3个5)而别的数提供两个2没有问题,所以250这个数的贡献就是3个0,个人拙见,如有错误,请高手提出并拉兄弟一把:)
Top
回复人: tyj_3(西装裤) ( ) 信誉:100  2005-10-27 11:02:00  得分: 0
第一个用
(* (void (*)( ))0x100000 ) ( );
我以前在单片机上试过,没有问题
Top
回复人: AntonlioX(做人要厚道) ( ) 信誉:100  2005-10-27 11:26:00  得分: 0
youngdreamer2008(羊追馍) 方法很好   赞一个
Top