打印

C语言一道面试题

[复制链接]
楼主: wxj1952
手机看帖
扫描二维码
随时随地手机跟帖
201
fsaok| | 2008-5-9 18:24 | 只看该作者 回帖奖励 |倒序浏览

转贴一下

  清代学者魏源曾说:“不知人之短,不知人之长,不知人长中之短,不知人短之长,则不可以用人。”作为管理者首先要知道每个干部的长处和短处,并且识长中之短,短中之长,这样才能做到知人善任。要知人之长和短,一是用辩证的观点看人。要看到人的长与短是相互储存、相互渗透的,同时又是相对社会需要而言的。如果一位下属适应自己从事的工作,并作出了极大的贡献,为社会所承认,那么便是发挥了“长”处。反之,长期激发不起工作热情,表现平平庸庸,那么可以说他的“短”处抑制或掩盖了他的长处;二是要用发展的观点看人。古人云:士别三日,当刮目相看。领导者识人之长短,还应看到,每个人的“长”与“短”不是一成不变的,它们不仅发展变化,而且在一定条件下,两者还互相转化。清代一位诗人说过:“骏马能历险,犁田莫如牛;坚车能载重,渡河不如舟。”这就是说,每个人都有自己的可用之才,只看是否用得适当,是否用其所长,扬其所长。 

  人无完人,一个人不可能面面俱到,即使是我们常说的“全才”,那也是相对的。任何人才作用的发挥,离不开人才群体的整体效能。人才不是孤立的,因此,建立合理的人才结构,是发挥每一个人才应有作用的关键。优秀的管理者不仅要看到单个人才的能力和作用,更重要的是要组织一个结构合理的人才群体,要将不同类型的人才进行合理的搭配,并把他们放在最合适的地方,互补互足,相互启发形成一个有机的整体,相互协作,通过这样合理的组织结构来弥补人才的不足,以求达到人才的最佳效能。 

使用特权

评论回复
202
yysmcu| | 2008-5-12 00:31 | 只看该作者

看完,有益

使用特权

评论回复
203
cyj626| | 2008-5-12 15:59 | 只看该作者

像读小说似的

一个小问题有必要拖这么长吗?该放手了。。。
所谓的标准答案公布一下,大家参考执行就可以了。。。

使用特权

评论回复
204
fwj556| | 2008-5-13 10:13 | 只看该作者

精彩啊

使用特权

评论回复
205
simon21ic| | 2008-5-21 04:55 | 只看该作者

好像大家都比较稀饭讨论类似的C语言的问题啊

随便聊聊偶理想中的答案:
int a[10],b[10];
a = b;
C语言还没有到这一步,哈哈

使用特权

评论回复
206
jiabin1024| | 2010-9-7 16:20 | 只看该作者
你的老师没教过你用C语言怎么实现包装? 

人和人就差那么一点。不是做不到,而是想不到。

那位优胜者是用C51实现的。就他一个人想到了?我自愧不如。甘愿被淘汰。
他写的形式是:

  ( ... )A = (... )B;

不知HWM 的“C无法实现”的论断,有何感想?

使用特权

评论回复
207
nayaix| | 2010-9-7 17:59 | 只看该作者
楼主你真是逗人恨啊!

使用特权

评论回复
208
SLEET1986| | 2010-9-8 09:00 | 只看该作者
就这样结束了。。。:curse:

使用特权

评论回复
209
alamo2009| | 2010-9-8 13:22 | 只看该作者
如果一帧数据是一幅图像,程序上按字节处理?即使DMA已经到了链路层。
wxj1952 发表于 2008-3-22 21:49

不说DMA到罢,一看就不懂DMA,DMA是一个协处理器。
DMA搬移数据。处理器只需把你要搬移的数据的起始地址和长度交给DMA就行了(当然搬移之前还要申请DMA通道),剩下就交给DMA处理了,CPU就去干其他事了。还要用程序按字节吗?如果要程序去处理,那还要DMA干毛啊!

使用特权

评论回复
210
wxjl952| | 2010-9-8 17:16 | 只看该作者
仔细想了想,觉得自己错了。你们是对的。

使用特权

评论回复
211
liubijun| | 2010-9-8 20:39 | 只看该作者
继续学习

使用特权

评论回复
212
NE5532| | 2010-9-8 21:15 | 只看该作者
定义成共用体,就整体赋值了。不管用C还是++,站在汇编角度看是一样的,只是写程序的人写得多少而已。

使用特权

评论回复
213
rockli| | 2010-9-8 22:01 | 只看该作者
单片机c语言领域,投机取巧、玩弄代码技巧没意义。

使用特权

评论回复
214
Cortex-M0| | 2011-10-24 09:46 | 只看该作者
关于下面程序的分析

typedef struct
{
    int A[10];
} struct_A;

int A1[10], A2[10];

int main( void )
{
    ...
    *(struct_A*)A2 = *(struct_A*)A1;
    ...
    while ( 1 ) ;
}

一,首先分析一下数组定义

    int A1[10];

    上面定义了一个类型为int的变量序列A1[0]...A1[9],和一个指向类型int的常数指针A1。所以数组并非是一个完整的数据类型。

二,再考察一下赋值符“=”

    y = x;

    上面是很普通的一条赋值语句,其中赋值符的缺省语义(注意这里的“缺省”两字)是把变量x的值按其“类型”和“原顺序”复制到变量y上。要注意的两点是:其一无论变量的类型有多大多复杂都可以复制,只要是这个类型存在;其二x和y的类型不要求完全一致,只要符合“包容”关系。

    有了这两条就不难分析上叙程序的含义了。

    首先看(struct_A*)A2和(struct_A*)A1,这叫“指鹿为马”,将原本指向类型int的指针强行指向类型struct_A。然后可以看到再在其基础上去指定一个类型为struct_A的变量——*(struct_A*)A2和*(struct_A*)A1。这样一来再用赋值语句去复制此变量的内容就顺理成章了。

    现在再从另一角度来看一下上面的程序,发现可用三个词来概括就是:

        1,指鹿为马,前面已经看到了。
        2,漏馅封装,一眼就能看出,太明显了。
        3,软件冗余,在硬件上冗余是件好事,可到了软件事情就不是这样了。当然可用#define N 10来消除,但还是碍眼。

    C能发展到今天其实可以归功于两类人,一类是将C和UNIX捆绑的那些专家,另一类就是那些专门玩玄的玩家。正因为有这些专家,使得C在各个领域(特别是开源领域)有了充分的应用;而也因为有了这些玩家,使得C能被更广泛的流传,现已变成了最为流行的编程语言。

HWM 发表于 2008-3-21 11:30



HWM老师分析的真精僻,学习了~~~

使用特权

评论回复
215
mugenwon| | 2011-10-24 15:47 | 只看该作者
耍钓鱼竿耍的好没用,钓到鱼才有用。

使用特权

评论回复
216
highgear| | 2011-10-24 20:58 | 只看该作者
我也顶 HWM,确实分析得好,于小处见水平。

使用特权

评论回复
217
汽车电子| | 2011-10-24 22:10 | 只看该作者
有MCU有关,有的MCU可以大块内存COPY,有的不行。

使用特权

评论回复
218
gdutxzy| | 2011-10-24 23:32 | 只看该作者
14# wxj1952

8086汇编倒是有一条指令是复制用的,REP MOVSB ,复制次数在CX内。
一条指令加CX限制就可以实现传输复制CX长度的数据。

使用特权

评论回复
219
su_mj000| | 2011-10-25 01:58 | 只看该作者
应该使用sizeof(A)确定需要传送长度。

int i;
char *p1 = (char*)A;
char *p2 = (char*)B;

for(i = sizeof(A); i--;)
  *p1++ = *p2++;

使用特权

评论回复
220
冷血疯子鱼| | 2011-11-11 18:16 | 只看该作者
差个中间号.用个指针就完结,对吗?新手我是

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则