首页 | 新闻资讯 | 软件应用 | 图形图像 | 网络应用 | 硬件学堂 | 程序开发 | 安全中心 | 素材下载 | 作者专区 | 教育频道
学院论坛 | 推荐专题 | 专家答疑 | Flash剧场 | Photoshop | 名词解释 | 梦幻桌面 | PS高手进阶 | QQ区 | 壁纸 | 黑客教材
Flash教程| 动画制作 | AutoCAD  | 3DMax专区 | PS视频教程| 网页制作 | CorelDRAW| Firework | 滤镜与实例 | 全部视频教程
学院热点专题
|21互联专区| 照片处理 | QQ 动画 | 系统优化 | 会声会影 | 制作游戏 | Win2003 | 大话成语 | MSN专题 | 头条
| 天音听听 | QQ 技巧  | ASP教程 | 菜鸟入门 | 实用工具 | ADSL宽带 | 硬盘世界| BT  下载 | Vista  | 问吧
 欢迎各出版社以及作者与我们联系发布电子版书籍.电子邮件:
book@mail.enet.com.cn
 
书名:捉 虫 历 险 记
作者:(美) Steve Oualline
来源:清华大学出版社
ISBN:ISBN 7-302-07679-0/TP·5624
页数:805
开本:185×260
出版时间:2003
定价:36.00
  本书采用幽默通俗的语言帮助读者从其他程序员的失误中吸取教训,从而减少自己程序中的错误。全书共分为三大部分:第Ⅰ部分列举了114个不同类型、含有bug的程序代码,;第Ⅱ部分给出了第Ⅰ部分114个bug程序代码所涉及的问题的提示;第Ⅲ部分给出114个bug程序代码所涉及问题的答案。

1.3 程序3:清晨的惊奇
这个程序是由我的一个朋友编写的,那时我们都在上大学。有一次,老师安排的课后作业是编写一个矩阵相乘(matrix-multiply)的例程。而且,这个矩阵相乘的函数本身要求必须使用汇编语言来编写。为了使程序的运行速度尽可能地快,他使用了我设计的一个算法,该算法向量化了矩阵。

为了测试这个程序,他利用SAIL编写了一个简短的测试函数。当我们测试这个程序时,却得到了一个错误答案。我们两个人从晚上8点到第二天凌晨2点仔细检查了该程序中的每行代码。最后,当我们找到错误时,都疯狂大笑起来,因为那是一个如此低级的错误。

注:

SAIL是一个用于PDP-10的旧式系统编程语言,其调试器称为BAIL。后来,在该语言的基础上创建了与机器无关的独立版本,名为MAIN SAIL。该版本的面世时间比C语言还要早几年。

下面这个程序是前面所提到的“知名”代码的简化版本。该程序完全由一种语言(C语言)编写,且使用非常简单的乘法算法。但是,最初的bug仍然存在。结果会如何呢?

1 /***********************************************

2 * matrix-test -- Test matrix multiply ?*

3 ***********************************************/

4 #include <stdio.h>

5

6 /***********************************************

7 * matrix_multiply -- Multiple two matrixes ???????*

8 ***********************************************/

9 static void matrix_multiply(

10 int result[3][3], /* The result */

11 int matrix1[3][3],/* One multiplicand */

12 int matrix2[3][3] /* The other multiplicand */

13 )

14 {

15 /* Index into the elements of the matrix */

16 int row, col, element;

17

18 for(row = 0; row < 3; ++row)

19 {

20 for(col = 0; col < 3; ++col)

21 {

22 result[row][col] = 0;

23 for(element = 0; element < 3; ++element)

24 {

25 result[row][col] +=

26 matrix1[row][element] *

27 matrix2[element][col];

28 }

29 }

32 }

33 }

34

35 /**********************************************

36 * matrix_print -- Output the matrix ???????*

37 **********************************************/

38 static void matrix_print(

39 int matrix[3][3] /* The matrix to print */

40 )

41 {

42 int row, col; /* Index into the matrix */

43

44 for (row = 0; row < 3; ++row)

45 {

46 for (col = 0; col < 3; ++col)

47 {

48 printf("%o\t", matrix[row][col]);

49 }

50 printf("\n");

51 }

52 }

53

54 int main(void)

55 {

56 /* One matrix for multiplication */

57 int matrix_a[3][3] = {

58 {45, 82, 26},

59 {32, 11, 13},

60 {89, 81, 25}

61 };

62 /* Another matrix for multiplication */

63 int matrix_b[3][3] = {

64 {32, 43, 50},

65 {33, 40, 52},

66 {20, 12, 32}

67 };

68 /* Place to put result */

69 int result[3][3];

70

71 matrix_multiply(result, matrix_a, matrix_b);

72 matrix_print(result);

73 return (0);

74 }

75

(请参见“提示34”和“答案53”)

本书目录
常见C++ Bug大围剿
程序2:老师的问题
清晨的惊奇
典型的初始化问题
错误的平方
蹩脚的除法运算
问题程序
Hello World程序
计算字符个数
过于简单的除法
关于零的错误
关于位的小故障
未考虑分制
程序的故障点
幼儿园算术修订版
关于位的另一个故障
Microsoft的缺陷
容易中断的链接
最大值混乱
无法读取文件
慢吞吞的字典
姓名游戏
误算
不能同步
求和问题
不是指针类型
平方错误
总计错误
快速退出
数组消失的情形
超长队列
另类异常
文件输出错误
堆栈错误
文件名游戏
速度杀手
发送错误消息
控制调试器
幻影文件
再现Hello
每周龙虎榜
★★★★★
  本书从软硬件方面着手,介绍网络基础和原理。
★★★★
  本书用诙谐幽默的语言介绍了搜索引擎的使用。
★★★
  本书通过实例讲解,让您在复杂的职场中轻松应对。

热门关键字:手机 | 笔记本 | MP3 | 移动存储 | 数码相机 | 数码摄像机 | 显示器 | 学院 | 软件下载 | 游戏 | IT女性 | 方案库

关于eNet | 广告服务 | 我们的产品 | 使用版权 | 投稿指南 | 诚邀加盟 | 联系我们

网站合作、内容监督、商务咨询:010-65245588
对本站有任何建议、意见或投诉,请点这里在线提交
Copyright © 1998--2007 硅谷动力公司版权所有

未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
【声明】本网站部分内容属论坛网友发布,本网站仅提供网友交流平台,但有权在本网站
范围内引用、发布、转载来自论坛网友发布的内容。网友发布内容纯属个人行为,与本网
站立场无关。本网站对于论坛网友发布的内容所引发的版权、署名权的异议及纠纷,不承
担任何责任。其他媒体转载须事先与原作者和本网站联系。
京ICP证000044