- 2007年01月19日
按 ‘ infotech ’ 分类归档
今天做了个危险的决定,把Linux从笔记本里删除了,理由是用得太少。 可是,删除了Linux的分区之后,GRUB就找不到存放系统启动选择信息的menu.lst,结果连XP也起不来了。 系统只显示了个GRUB>提示符。
小脸苍白地摸到了家,拿另一台机器到网上狂搜,终于Google出了解决方法:
GRUB> rootnoverify (hd0,0) GRUB> makeactive GRUB> chainloader +1 GRUB> boot
这个可以解决XP不能启动的问题,可是总不能每次启动都敲四行命令吧。
又仔细地读了读那个网页,找到了更好的方法:
把XP系统的恢复盘放到光驱里,从光驱启动。从系统给的选项里,按R键选择恢复系统。 当系统提问是修复还是完全恢复时,敲EXIT。系统提示
1: C:\WINDOWS Which Windows Installation would you like to log onto (To cancel, press ENTER)? ---------------------------------------------------------------------
输入1。
在提示符下输入FIXMBR。
系统会显示一堆信息吓唬你,当它说现在的MBR不标准(the MBR is non standard)并问你是否继续时, 回答yes。重新回到提示符时,敲EXIT,系统将成功启动XP。
月刚觉得在旧的Sun工作站上升级或许还不如买一台新的工作站省心省钱,让我帮着看一下国内的价格。
到网上一看,Blade 150的北京参考价是13500。打电话让华胜给个报价,包括基本系统和一个Forte C编译器。下午,报价传来了,基本的系统是13560,跟网上说的价格差不多;而Forte C的位置上写了个Sun Studio 10,开价26600!
到网上搜了搜,看这个软件是个什么东东,是否与Forte C等价或类似,却意外地发现,Sun Studio从11月开始,早已向用户免费提供。
哈哈哈!估计华胜也知道这个消息,就是想着蒙一个算一个。
把放幻灯的程序写好了,自我感觉很好。Netscape太可恶了,渐隐效果实现那么麻烦,图像还不支持click事件, 这些且都不去说它,它竟然还把
<div id=”Parent”>
<div>Part 1</div>
<div>Part 2</div>
</div>
每两行之间的回车空白字符也算一个Parent的childNodes元素,害得我只好写成很难看的格式:
<div id=”Parent”><div>
Part 1
</div><div>
Part 2
</div></div>
这是一个算二十四点的程序。从命令行输入四个数字,结果以后缀表达式输出。如:
$ calc24 8 8 3 3 8383/-/
即8/(3-8/3)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <math.h> void calc24(int, int, int, int); double calc(char *); void main(int argc, char *argv[]) { int n[4]; int i, j, k, m; if (argc != 5) { printf("Usage: %s a b c d\n", argv[0]); return; } for (i = 0; i < 4; i++) if ((n[i] = atoi(argv[i+1])) < 1 || n[i] > 9) { printf("%s is not a valid input\n", argv[i+1]); return; } for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) { if (j == i) continue; for (k = 0; k < 4; k++) { if (k == i || k == j) continue; for (m = 0; m < 4; m++) { if (m == i || m == j || m == k) continue; calc24(n[i], n[j], n[k], n[m]); } } } } void calc24(int a, int b, int c, int d) { char expr[10]; char *oper = "+-*/"; int i, j, k, m; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) { for (k = 0; k < 4; k++) { sprintf(expr, "%d%d%d%d%c%c%c", a, b, c, d, oper[i], oper[j], oper[k]); if (fabs(calc(expr) - 24) < 1.0E-3) puts(expr); sprintf(expr, "%d%d%d%c%d%c%c", a, b, c, oper[i], d, oper[j], oper[k]); if (fabs(calc(expr) - 24) < 1.0E-3) puts(expr); sprintf(expr, "%d%d%d%c%c%d%c", a, b, c, oper[i], oper[j], d, oper[k]); if (fabs(calc(expr) - 24) < 1.0E-3) puts(expr); sprintf(expr, "%d%d%c%d%d%c%c", a, b, oper[i], c, d, oper[j], oper[k]); if (fabs(calc(expr) - 24) < 1.0E-3) puts(expr); sprintf(expr, "%d%d%c%d%c%d%c", a, b, oper[i], c, oper[j], d, oper[k]); if (fabs(calc(expr) - 24) < 1.0E-3) puts(expr); } } } double calc(char *expr) { double a, b, stack[4]; int top, i, n; n = strlen(expr); top = 0; for (i = 0; i < n; i++) { if (isdigit(expr[i])) { stack[top++] = expr[i] - '0'; continue; } if (top < 2) return 9999; b = stack[--top]; a = stack[--top]; switch(expr[i]) { case '+': stack[top] = a + b; break; case '-': stack[top] = a - b; break; case '*': stack[top] = a * b; break; case '/': if (b == 0.0) return 9999; stack[top] = a / b; break; } top++; } if (top != 1) return -9999; return stack[0]; }
下了两个晚上,一盘也没赢,今天发了狠,上来把王前兵走了两格,对方跳马,我就把王前兵往前再推一格……
机器长考了五分钟后,旗钟倒下。但是还不肯认输,继续苦苦思索。 我又等了五分钟,等得好不耐烦,只好把窗口关了。
据说这是98%的人一小时也做不出来的题目。在网上看见,一时技痒,编了个程序来解,总算落到那2%里面了。哈哈。
请回答下面10个问题:
1、第一个答案是b的问题是哪一个?
(a)2;(b) 3;(c)4;(d)5;(e)6
2、唯一的连续两个具有相同答案的问题是:
(a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7
3、本问题答案和哪一个问题的答案相同?
(a)1;(b)2;(c)4;(d)7;(e)6
4、答案是a的问题的个数是:
(a)0;(b)1;(c)2;(d)3;(e)4
5、本问题答案和哪一个问题的答案相同?
(a)10;(b)9;(c)8;(d)7;(e)6
6、答案是a的问题的个数和答案是什么的问题的个数相同?
(a)b;(b)c;(c)d;(d)e;(e)以上都不是
7、按照字母顺序,本问题的答案和下一个问题的答案相差几个字母?
(a)4;(b)3;(c)2;(d)1;(e)0。(注:a和b相差一个字母)
8、答案是元音字母的问题的个数是:
(a)2;(b)3;(c)4;(d)5;(e)6。(注:a和e是元音字母)
9、答案是辅音字母的问题的个数是:
(a)质数;(b)阶乘数;(c)平方数;(d)立方数;(e)5的倍数
10、本问题的答案是:
(a)a;(b)b;(c)c;(d)d;(e)e
唯一的答案是CDEBEEDCBA,算法如下:
#include <stdio.h> int a[10]; void select(int n, int answer); void main() { int i; for (i = 'a'; i <= 'e'; i++) select(0, i); } void select(int n, int answer) { int i; int same, pos; int asum, bsum, csum, dsum, esum; int diff; a[n] = answer; if (n < 9) { for (i = 'a'; i <= 'e'; i++) select(n + 1, i); return; } /* 1 */ for (i = 0; i < 6; i++) if (a[i] == 'b') break; if (i < 1 || i > 5 || a[0] != 'a' + i - 1) return; /* 2 */ same = 0; pos = 0; for (i = 0; i < 9; i++) if (a[i] == a[i+1]) { if (same) return; same = 1; pos = i; } if (pos < 1 || pos > 5 || a[1] != 'a' + pos - 1) return; /* 3 */ if (a[2] == 'a' && a[0] != a[2]) return; if (a[2] == 'b' && a[1] != a[2]) return; if (a[2] == 'c' && a[3] != a[2]) return; if (a[2] == 'd' && a[6] != a[2]) return; if (a[2] == 'e' && a[5] != a[2]) return; /* 4 */ asum = 0; bsum = 0; csum = 0; dsum = 0; esum = 0; for (i = 0; i < 10; i++) { switch (a[i]) { case 'a': asum++; break; case 'b': bsum++; break; case 'c': csum++; break; case 'd': dsum++; break; case 'e': esum++; break; } } if (asum != a[3] - 'a') return; /* 5 */ if (a[9+'a'-a[4]] != a[4]) return; /* 6 */ if (asum == bsum && a[5] != 'a') return; if (asum == csum && a[5] != 'b') return; if (asum == dsum && a[5] != 'c') return; if (asum == esum && a[5] != 'd') return; if ((asum == bsum || asum == csum || asum == dsum) && a[5] == 'e') return; if ((bsum == csum || csum == dsum || dsum == esum || esum == bsum || esum == csum || bsum == dsum) && a[5] != 'e') return; /* 7 */ diff = a[6] - a[7] > 0 ? a[6] - a[7] : a[7] - a[6]; if (a[6] != 4 - diff + 'a') return; /* 8 */ if (asum + esum < 2 || asum + esum > 6 || a[7] != 'a' + asum + esum - 2) return; /* 9 */ switch (bsum + csum + dsum) { case 3: case 7: if (a[8] != 'a') return; break; case 4: case 9: if (a[8] != 'c') return; break; case 6: if (a[8] != 'b') return; break; case 8: if (a[8] != 'd') return; break; case 10: if (a[8] != 'e') return; break; default: return; } /* 10 */ /* print solution */ for (i = 0; i < 10; i++) putchar(a[i]); putchar('\n'); }
以前在学校上机,正调一个游戏,有个家伙走进来,说我正在工作的那个终端是“他的”,很不礼貌地让我离开。 可那台终端我都用了一个小时啦。
好,走就走。我就换了一台,闭目沉思一番,捣鼓了一个shell程序:
#!/bin/sh
user=$1
while true
do
who | grep “^$user ” | while read line
do
set $line
write $1 $2 < /etc/passwd
done
sleep 5
done
然后我用who -u查出他的用户名:哼哼,原来是idiot,好吧,
$ bulk idiot&
762
$ clear
只见他的屏幕每隔五秒就被一大堆的字符充满。
他一定是吓呆了,拼命地敲键盘,我听着:
“的地得大当哐!”
“的地得大当哐!”
“的地得大当哐!”
哦,在敲clear命令哪,哈哈。
敲键声音慢下来了,后来他停住了手,怔怔地望着翻滚的屏幕,叹口气,走了。连exit都忘了。
对这个程序甚是得意,就向同学们卖弄,给人暗暗记下来了。那天俺正在玩得高兴,忽然嘟的一声,屏幕上开始发花。 回头瞧了瞧,大家的神色都很平静,像是什么也没有发生似的。
哼哼,胆敢暗算老爷。于是我从容地敲下一条命令:
mesg n
突然听到后面一声惨叫。