sunmoon1997 发表于 2004-11-16 17:37:21

这个是必要的。 不过只要 *l_data.charse != ‘\0’ 就够了, 可以不用去调用一个函数的。

cjacker 发表于 2004-11-16 17:37:33

哥们,看来咱们两对C/C++,汇编的理解还是不够啊
呵呵,难免的错误。谁又敢说自己精通C/C++啊。(不过有些丢人了:-()
另,这个地方的代码没有必要用strlen。:-)

if (l_data.charset != NULL && strlen(l_data.charset) > 0) {
+           strcat(lang_string, ".");
+           strcat(lang_string, l_data.charset);
+   }

其实整个lang_string全是调试用的,可以不加。
这一段我还没看到过。

cjacker 发表于 2004-11-16 17:44:34

说到算法了,我出到小题,比较有意思的一个题目:


判断一个自然数数是不是2的N次方。


不要查任何东西,直接写,写出自己认为最优的算法。

这可是考查基础的题目,每次面试必用,百发百中。

nzinfo 发表于 2004-11-16 17:56:07

1 lang-string 不是必要的。在新版的wine里已经不用了
2 关于2的N次方,只需要做位移就可以了。具体如何实现,还需要再考虑。目前想到的算法判断太多。

caihua 发表于 2004-11-16 17:57:55

:roll: 又是程序的说?头晕啊,幸亏不是搞计算机的

sunmoon1997 发表于 2004-11-16 17:58:25

只想到这个:

int i;
for (i = 0; i < sizeof(int)*8;i ++) {
   if (num & 1 << i) {
      print("num 是 2 的 %d 方", i);
      break;
    }
}

if (i == sizeof(int)*8)
   printf ('num 不是2的N次方");

cjacker 发表于 2004-11-16 18:06:03

注意,一行,呵呵

nzinfo 发表于 2004-11-16 18:10:18

可以把int 分成几个byte,分别与数相作用,只要结果中有超过两个不为0,则定不可除。
然后再比较不为0的字节。

这样可以省去一些比较。但是不一定比sunmoon1997兄的效率更高。

caihua 发表于 2004-11-16 18:11:02

:mrgreen: 一行?可以
计算机,来啊,判断一个自然数数是不是2的N次方。直接写,写出自己认为最优的算法
一行,完毕 :mrgreen:

jiangtao9999 发表于 2004-11-16 18:18:29

如果是 2 的 N 次方,那么他的 2 进制数只有一个 1 ,之后怎么判定就不会了……… :oops:

nzinfo 发表于 2004-11-16 18:20:33

最简单的算法
是2的N次方吗(number);
呵呵,C里是不是这么写不清楚了。如果是使用位操作技巧可能可以写在一行里,但是失去了可读性了(至少还需要写条注释):-)
所以,还不如用语言或库函数提供的特性了。

jiangtao9999 发表于 2004-11-16 18:21:01

?!
把这个数取 2 的余数不就完了?
如果余数是0,就是 2 的 N 次方~~~

if ( num % 2 ) printf("不是2的N次方");
elseprintf("是2的N次方");

nzinfo 发表于 2004-11-16 18:23:03

?!
把这个数取 2 的余数不就完了?
如果余数是0,就是 2 的 N 次方~~~

不对, 和我一样绕进去了

例如10

sunmoon1997 发表于 2004-11-16 18:25:13

取余同样也是用移位实现的吧。

jiangtao9999 发表于 2004-11-16 18:26:38

10 %2 是多少?

好像应该叫取模?
页: 1 2 3 [4] 5
查看完整版本: 关于Wine里显示清晰中文字体的方法