C语言编程期末试题答案

时间:2019-05-12 16:58:48下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言编程期末试题答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言编程期末试题答案》。

第一篇:C语言编程期末试题答案

科目:C语言编程 适用班级: 11级计算机1、2班试题答案

一、单选题(每小题2分,共30分)

1.、A2、.B3、.D4、.A5、A6、A7、C8、.C9、.A.10、A11、.A12、C13、D14、A15、D

二、填空题(每小题1分,共20分)

1、把10赋值给变量S2、基本型、短整型、长整型、无符号型,int、short、long、unsigned3、字母、数字、下划线4、3.55、36、a=a*b7、a=a/b8、19、3.510、字母、下划线

三.判断题(每小题2分,共10分)

1、正确

2、错误

3、错误

4、错误

5、正确

四、简答题;(每小题5分,共20分)

1、字符常量是由单引号引起的单个字符、字符串常量是由双引号引字节起的字符序列,字符常量的存储单元是一个字节而字符串常量所占的存储单元比它实际的字符个数多一个

2、基本的输入输出一般分为三种:一是单字符的输入与输出,即getchar()和putchar()函数;二是格式化的输入与输出,即scanf()和printf();三是字符串的输入与输出,即gets()和puts()函数3、1)C语言具有中级语言的特性2)C语言结构性能强3)功能齐全4)适用范围广泛

4、编辑、编译、连接、执行

五、程序改错题(每小题4分、共8分)

1、错误:scanf(“%d ”,i);正确:scanf(“%d ”,&i);

2、错误:main正确;main()

六、编程题(第6分,共12分)、main()

{printf(“**********n”);

printf(“Very Good!n”);

printf(“**********n”);

}

2、main()

{inta=15, b=5,sum;

sum=a+b;

printf(“%d”,sum);

}

第二篇:编程语言学习心得

程序语言学习的总结

通过两年的学习,我们基本上掌握了C语言,C++和C#三个编程课程。对于程序设计语言的学习,分为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。课程上的安排除了课堂讲授以外,学院设有专门课堂到实验室进行上机操作实验。

要利用c语言学到的知识编写c语言程序,即把c语言作为工具,通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确。在这种思想支配下,可能你会想办法去“掩盖”程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

在原有的C语言的基础知识之上,初步接触C++时感到比较简单易懂。但随着之后的步步深入学习,C++的不同之处以及其优势逐。从第二章引入了C++简单程序的设计。包括一些C++语言的概述,基本数据类型和表达式,数据的输入与输出,算法的基本东芝结构,以及自定义类型数据等知识。此部分多与C语言相似。之后又学习了函数的相关内容,这里学到了新的知识要点----函数重载。该内容尤其在现在做课程设计的时候尤为重要。类是C++语言的精华之所在,在学习中,我感觉到类和C语言中的结构体有很大的相似之处,但在类中的构造函数、拷贝构造函数以及类的组合,经常弄混淆一些概念。在这之后又学习了类的继承与派生。这使得类与类之间形成了树状图的模型,各子类可以访问到父类的一些数据成员,同样也实现了数据的之间的“共享”。我个人在编写派生类的构造函数和拷贝构造函数时,感觉很不熟练,后面章节的多态性主要学习了运算符的重载,其本质就是函数的重载。

在学习C#中,类是具有相同特性和行为的对象的抽象。它使用关键字class声明的。在c#中仅允许单个继承,类只能从一个基类继承实现。但是一个类可以实现一个以上的接口。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等局可以看对象,它不仅表示具体的事物,还能表示抽象的规则、计划或者事件。接口只是包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的。接口可以是命名空间或类的成员,并可以包含下列成员:每个C#可执行文件都有一个入口—Main方法:static void Main()修饰符public表示可以在任何地方访问该方法。所以可以在类的外部调用它。修饰符static表示方法不能在类的实例上执行,因此不必先实例化类在调用。在变量声明时:变量是类或者结构中的字段,如果没有显示初始化,创建这些变量时,其值就是默认的0。变量是方法的局部变量就必须在代码中显示初始化,之后才能在语句中使用它们的值。

课堂上要讲授许多关于语法规则,要使用这些工具解决问题,通过多次上机练习,对于语法知识有了更深刻的认识,在理解的基础上就会自然而然地掌握。一个程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。通过上机实验,熟练地掌握开发环境,为以后真正编写计算机程序解决实际问题打下基础。

第三篇:C语言编程

#include(stdio.h)

main()

{ int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0};

char again='y';

while(again=='y'){ srand((int)time(0));

while(i4){ k=(int)rand()%10;

for(j=0;ji;j++)if(k==question[j]){ k=-1;break;}

if(k==-1)continue;question[i]=k;i++;}/*while i*/

for(i=8;i0;i--)/*还有8次机会*/

{ A=0;B=0;printf(“n你还剩下%d次机会。”,i);

printf(“n请输入四个0-9之间的数字,中间用空格隔开n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]);

for(j=0;j4;j++)

for(k=0;k4;k++)

{ if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/

if(A==4){ again='0';

printf(“n你赢了,还继续猜吗?(y/n)”);

while(again!='y'&&again!='n')

scanf(“...%c”,&again);break;}/*if*/

printf(“n%dA%dB”,A,B);if(i==1){ again='0';

printf(“n你输了,正确答案是”);

for(j=0;j4;j++)

printf(“%dt”,question[j]);

printf(“n还继续吗?(y/n)”);

while(again!='y'&&again!='n')scanf(“%c”,&again);

printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感谢您玩这个游戏。”);}

第四篇:编程语言的介绍

本文由2008146683贡献

doc1。

编程语言介绍

目录 [隐藏] 1 开放源代码的必要性 2 各种语言的选择 3 各种语言的选择 4

我为什么选择了 Python 5 Ruby 和 Python 的比较 5.1 Python 和 Ruby 的相同点

5.2 和 Python 相比 Ruby 的优点 5.3 和 Python 相比 Ruby 的不足 5.4 Pyth

on 和 Ruby 的语言的选择 6 多脚本语言的大统一及疑问 7 .NET 介绍 7.1 .NET

所实现的 Java 的功能 7.2 .NET 未实现的 Java 功能 7.3 .NET 实现的 Java

不具备的功能 7.4 相对 vs6 的改进 8 XML 各种技术介绍 9 最先进的 XML 格式图

形界面程序开发工具-XUL 10 最接近人类语言的编程语言-REBOL 11 最具有现代感 的 Lisp 解释器 DrScheme 12 eiffel 语言印象 13 mozart oz 语言 14 各种语言的

选择和语言之间的关系 14.1 一般是使用什么软件,就用什么软件的语言 14.2 然

后看处理什么样类型的数据 14.3 从语言特点来说 14.4 C 语言是最普及的语言,但 C 语言有一些缺点,因此,就产生了很多改进 C 的语言 14.5 关于图形用户界面 的选择 14.6 discuss 15 文学编程和 CWEB 介绍 16 贡献 [编辑] 开放源代码的必

要性 在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在

巨大的智力浪费,大 家把大量的精力用在编写别人已经实现的程序代码上。看看,文

本编辑器有多少,看看 ftp 程序有多少,看看字处理程序有多少,这些程序虽然有

差别,但主要的功能都是一样的。要实现个性化的功能,在已有 的软件基础上修改会

节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工

作量,世界上的程序员至少可以节省 80%的工作量。同时,开放源代码也方便了大家 的交流,阅读源代码 应该是最直接最有效的学习途径,尤其是比较专业的领域。要

开放源代码,下面几点比较重要: 语言要流行。语言的函数和类库统一。语言的语

法和编译器要统一。编译器是否开放源代码。API 是否开放源代码。语言的可重用性、功能、友好

性。语言统一:如果大家都用一种编程语言,都用同样的函数,同样的类库,那么,大家的共同语言就会 很多。大家只要学会一种语言,一套函数,一套类库,就可以相

互读懂源代码,这样,学习量是最少的; 但是语言统一根本是不可能的事,因为各种

语言都有其特色,如果取了其中一个优点,通常就会牺牲另一 个优点。可是学习新 的 API 浪费程序员大量的时间和精力,尤其是当这个 API 有大量和其他 API 重复 的功 能的时候。要增加代码的可重用性,要从下面几点着手: 代码的可读性。如格

式、是否接近英语语法和单词。代码的表达能力,也就是简单性,能用最少的语句和

单词实现同样的功能。代码的结构性,如函数、模块、类。语言功能的强大从下面

几点来说: 是否拥有大量的库支持。这是最重要的,要求编写任何功能的程序都有强

大的库支持。语法功能是否强大,比如是否有出错处理。是否有指针。语言的友好

性: 语言包的大小,语言包越小,学习越简单。语言是否有友好的编辑调试环境。

语言的可视化和集成编程环境。

[编辑] 各种语言的选择 如果编写对性能要求苛刻,或和操作系统结合紧密的程序,必然选择 C。

如果编写到处可用的程序,选 Java。

如果编写大程序,可能的话尽量用脚本语言如 Python、Ruby,不行了再用 Java

和 C。因为脚本语 言带来了生产力。

编写文本的处理程序用 Perl 或 Ruby。

编写知识的处理程序用 prolog。编写最灵活,最模糊的程序用 Lisp。编写 office 程

序用 vba。编写服务器端程序,PHP、(采用自己熟悉的语言来写,例如 Perl、Pyt

hon、Ruby)CGI、ASP、(熟悉 Java 就用)JSP 都是选择。编写数据库程序用 vb、PowerBuiler 或 delphi。进行算法研究、设计,用 Pascal。[编辑] 各种语言的

选择 如果要追求性能和程序的能力,要完全发挥操作系统的能力,使用 C/C++语

言是合适的。Windows 在 环境下用 VC,在 Unix-like 环境下用 gcc。如果不是

追求和操作系统完美结合,而只是性能,又要追求跨平台性,那么仍然选择 C,但可

以选择 跨平台的库,如 qt、gtk、fox、wxWidgets。如果要编写游戏也有跨平台选择

:SDL。如果不满意 C 领域标准的不统一,不满意 C 的容易出错,不满意 C 的面向

对象特征不彻底。如果不在 乎跨平台,Windows平台可以选择 C#,mac平台可以选

择 Cocoa(Objective-C)。如果需要跨平台,可以选择 Java。如果需要跨平台,又要广泛的支持的话,选择 Java。在 Unix-like 下,最方便的工具语言是 Per

page 1 l,它有强大的社区和代码库的支持。

如果只作为简单应用的工具语言,Python 和 Ruby 是更好的选择,他们的跨平

台移植性好,应用也 比较广泛。其中 Python 更适合入门和交流,长期使用也不错。

Ruby 是对 Python 不满意的另一个选择,它提供了很多额外的功能。如果要选择一

个程序的嵌入语言,原来有 Lisp、Basic 和 Java,现在还可以选择 Python 和 Rub

y。如果在要求动态解释执行语言,而又不想学其他语言的话,C 程序员的选择是 p

ike,Java 程序员的 选择是 beanshell。在 Java平台,又想用脚本语言的话,可

以用 Python。最正统的基于文档的语言或叫动态页面语言是 JavaScript。最专门 的服务器端语言是 PHP,当然也有很多其他选择。XML 语言以 XUL 为最着名,dtml

也算一个,你自己也可以用 XML 作为自己特殊用途的语言。比如 jedit 就用 XML

作为一种模式定制语言。XML 语言是一种比较先进的趋势,比现有的语言在特殊领域

更高 效。要找容易实现的语言,Lisp 和 Tcl 是选择。Lisp 的数据和程序融为一

体的能力和自由是其他语言都没有的。现在出现了一个 Lisp 的现代化的变 种:REB

OL。如果有基于事实的编程的需要的话,prolog 和 Clips 是必然。[编辑] 我为什

么选择了 Python 首先声明,我编程只编应用程序,就是代替自己工作的小程序。如

果编写系统程序总会用到 C 或 Java 的。我喜欢脚本语言,脚本语言不用编译就可

以运行,非常便于修改,而编程序是一种经常性的活动,程 序编完后总在不断的修改

中,没必要搞的很隆重,还要编译。另外,脚本程序每个使用的人都可以随手拿 来修

改,不会出现还要去找源代码的情况。因此,C/C++和 Java 就被排除了。我喜欢

简单的语言,不喜欢为了编写简单的程序而去学习大量复杂的规定,需要大量的学习

才会的语 言不是好语言,是把人当机器看。C/C++和 Java 都有严格但罗索的语法,有永远学不完的函数、类、库。让人看到就头大。而 Perl 有各种怪里怪气的速记

符号,程序常常让人头晕。简单的含义除了容易学,还要 功能丰富,常用到的东西要

早就准备好,不用每个人都去写同样的数据结构程序等。Python 有丰富的数 据类型,有完备的面向对象的结构,有规则表达式等各种方便编程的模块。这个逻辑就是程

序做的多,人 做的就少,如果程序做的少,就要人做的多。这就是界面友好的问题。

容易上手,功能丰富是程序设计的 很重要的目标,Windows 就是靠这个流行的。P

ython 也很好的体现了这点。Perl 象 Unix 的 emaCs 而 而 之类其它工具一样,功

能强大,但太难学,太难懂。是比较违背人性的。关于性能。现在 Cpu 已经很强大

了。除了很大的程序和系统程序,没必要关心性能。关于功能。如果不是编写系统程

序和贴近系统的程序,没必要使用操作系统特别提供的功能。C 是可 以干任何事情,但它编程效率低,复杂。至于我为什么不用 vb,因为 vb 太庞大了。我没必要实现

一个小功能启动这么庞大的程序。太夸张。另外,vb 没有类继承,虽然是应用编程,但如果要编稍微大的程序,总会用到类继承的。Python 得强大得扩展能力使对 P

ython 得学习不会浪费。Python 经过简单得处理能使用各种得 C 和 C++库,也可

以被 C 和 C++调用。Python 可以直接使用 Java 得类,也可以直接被 Java 调用

。这样,对 Python、Java、C 得学习和使用经验都不会被浪费,还能相互补充。Py

thon 可以提高 Java 和 C 得编 程效率,Java 和 C 可以补充 Python 功能上得不

足。Python 还可以和 Tcl 直接交互,这种功能是内置得。期待 Python 能简单的

调用 Perl 和 PHP 得功能。能使用 Lisp 和 prolog 更好。[编辑] Ruby 和 Pytho

n 的比较 [编辑] Python 和 Ruby 的相同点 都强调语法简单,都具有更一般的表达

方式。Python 是缩进,Ruby 是类 Basic 的表达。都大量减少 了符号。都是动态数据类型。都是有丰富的数据结构。都具有 C 语言扩展能力,都具有

可移植性,比 Perl 的可移植性更好。也都可以作为嵌入语言。都是面向对象的语言,都可以作为大项目的开发工具。都有丰富的库支持。也有最宽松的版权许可,除

了一些工具属于 GNU 世界。都有 Lisp 特色的 eval 函数,也都能把函数作为参数

。也有图形界面的 Ruby 的专门编辑器。都获得了广泛的 C 库的支持。如 qt、gt

k、tk、SDL、FOX 等,Ruby 计划实现 SWIG 接口。都有完善的文档。[编辑] 和 P

ython 相比 Ruby 的优点 具有正则表达式和嵌入 HTML 的功能。Python 也有正则表

达式,但没有 Ruby 的应用方便和广泛。Python 的嵌入 HTML 项目才刚起步。Ruby

还有 apaChe 的 mod 模块。Ruby 本身也实现和很多 Unix 工具,如 raCC,doCtoo

ls。比 Python 更亲近Linux。比 Python 功能更完整的面向对象的语法。Ruby 的

page 2 整个库都是具有类继承的结构。他的基本的数据类型和运算符都是可以重载的。Ru

by 主要的功能都是通过对象的方法调用来实现的,而不是函数。Python 也在向这方

面发展,但没 有 Ruby 做的彻底。Ruby 的类是更规范的单继承,还有接口等概念的

实现。Python 可以实现在列表内的条件语句、循环语句,Ruby 用“块”的方式来

实现这个功能,Python 而 比 的更灵活,更具有通用性。Ruby 具有类似 Lisp 的

彻底的函数方式的条件语句、循环语句等。语句的表达能力更强。附带一些 Unix 工

具,如 raCC 等。[编辑] 和 Python 相比 Ruby 的不足 最大的不足正是因为 Ruby 的强大所引起的。它没有 Python 的简单性好。比较复杂的面向对象语法、“块”

语法的引入、正则表达式的引入、一些简写标记都增加了语言的复杂性。Python 的

缩进表达方式比 Ruby 的 Basic 的表达方式更让人悦目,Ruby 程序的满眼的 end 让

人不 舒服。当然,Ruby 认为 end 的方式比 Python 更先进。Ruby 还没有 Python 的“自省”的能力,没有从程序文件中生成文档的能力。Ruby 支持不及 Python 广

。国际化支持在 Ruby 的计划中。这是因为 Ruby 的历史比 Python 要短 造成的。

[编辑] Python 和 Ruby 的语言的选择 从简单的就是好的来说,Python 是没错的。

选 Python 适合寻找简单语言的人,这很可能造成 Python 更流行,因此也有更多 的支持。但如果要追求更强大的语法功能,对编程语言感兴趣,想了解各种编程概 念 的人,则 Ruby 是好的选择。Ruby 和 Python 都想取代 Perl,解决 Perl 的缺点—

—面向对象不足,但 Python 用是方法是混合面向对象和程序式的程式语言,Ruby

是允许自己这个面向对象语言扮成程序式的 程式语言,[编辑] 多脚本语言的大统一

及疑问 现在各种脚本语言太多了,有必要进行整合,parrot 是一个好的想法。.NE

T 也是好的想法。它为各 种脚本提供了一个统一的虚机,为各种脚本语言提供了基于

“类”的相互调用,为各种脚本提供了统一的类 库。现在各种脚本语言只是提供了

对 C 语言的交互性,这种交互也是费劲的和效果不好的。比如 Python、Perl、Rub

y 等都提供了对 C 的交互功能。脚本语言之间的交流障碍重重。而类似.NET 的东西,提供了 非常容易的各种脚本的相互利用的途径,避免了很多的代码的重复编写。这

种标准平台的力量是很大的,这种标准平台为什么没有在开源领域首先出现呢?众多的脚本正是开源的特点和

优势,为什么这种问题要 微软来解决呢?前面有人提出了类似的问题,在 Linux 中

为什么至今没有好用的类似 ODBC 的东西呢? 可能这种整合只有商业公司有能力实现 吧。我的理解是,如果有创新思想的人都拿他的想法去卖钱了,因此,在开源中只剩

下了模仿的人。kde 是模仿 Windows,koffice 是模仿 office,Linux 是模仿 Unix,gcc、bash 等也全都是模仿,以及 gstep 等,还有 freedos、atheos 等也是模仿,wxWindows、SDL 也是模仿。我想知道开源社区有没有自己 的创新?我所知道的创

新是 zope,但 zope 最初也是商业产品,后来才开源的。Perl 是创新,Python 是

创新,但还有什么呢?是不是开源领域只有 hacker,没有 Creator? [编辑] .

NET

介绍 [编辑] .NET 所实现的 Java 的功能 可控代码 跨平台的虚机和伪码 免费赠

送命令行编译器 纯面向对象语言 对 XML 和 XML web serviCes 的支持 和 jsp 对应 的 asp.NET 网页上的程序 一套统一的中间件环境。asp. NET 跟 jsp 不是同一个

层次上的 web 技术,asp. NET 使用完善的事件响应机制,WinForms 类似的 Web

Form 技术,只有 JSF 跟 Asp.NET 有可比性。[编辑] .NET 未实现的 Java 功能

免费的集成开发环境 多厂家支持,跨平台的成熟度 免费的 IDE,#develop,AS

P.NET 的有 MS 的 WebMatrix 而免费开源的 CLR 实现,有 MS 自己的 XP,FreeBS

D,Mac OS 下的 实现(原理演示不能进行商业应用),Novell 下的 Mono 项目,已经发布了 Beta1 版本,在 2004-6-30 将会发布 Release1; 还有 GNU 的一个.

NET 实现![编辑] .NET 实现的 Java 不具备的功能

多语言支持 强大的集成开

发环境。在 Windows 上媲美本机程序的速度。对 COM 的支持,对 vs 的继承 对

widows form、web form、服务器端程序的图形直观编程。[编辑] 相对 vs6 的改进

统一了集成开发环境,使 C++程序也具有了 vb 的友好性。[编辑] XML 各种技术

介绍 XML: XML 是统一格式的结构化数据的文本文件。基于 XML 的程序,数据结构

是开放的,方便不同程序处理同一种文件,这样,程序之间可以达到高水平的协作。

XML 现在成为了各行各业统一数据格式的基础。XML 发展出了完善的语法,它用 D

TD 或 XMLscheme 来界定 XML 的标记语言。用 uri 来唯一确定 一个 XML 格式。用

page 3 Css 或 XLT 来转换 XML 格式,xlink 和 xpointer 等来建立 XML 的链接,用 xpa

th 来定位 XML 中的数据。xHTML: 是严格符合 XML 格式的 HTML。RDF: 基于 X

ML 的元数据描述语言。方便交换结构化数据。方便交换知识。RDF 是用主语、谓语、宾语来描述知识的。SVG: XML 格式的矢量图形格式。SMILE: XML 格式的各种

多媒体在时间线上的协同。xmath: XML 格式的公式描述语言。

XML-rpC 和 soap: 以 http 协议和 XML 格式来进行网络程序之间的消息通讯

。XUL: netsCape 的 mazilla 使用的程序界面语言,基于 XML 格式,比 HTML 强

大的多的描述图形界面的 XML 语言。它用 Css 来换肤,用 DTD 来实现多语言界面,用 JavasCript 来实现程序逻辑,以此编写跨平台的可方便定制界面的程序,现在这

个程序 API 功能已经很强大了,整个 mazilla 程序就是基于 XUL 的。xaml: MS

在 LongHorn平台的最新编程语言,将统一 Windows 与 Web 编程,直接使用 Lon

gHorn 下的 浏览器进行执行,跟 XUL 有类比性 [编辑] 最先进的 XML 格式图形界

面程序开发工具-XUL 大家知道 netsCape 程序,一个仅次于 ie 得浏览器,也有很

多人知道 Mozilla,netsCape 得开放源 代码版本。但很多人只是使用 Mozilla,不

知道 Mozilla 另一个重要得功能--程序开发。在 netsCape 开放源代码后三年 Mo

zilla 得 1。0 版还没有问世,很多人讥笑他的超慢得开发速度,实际上,Mozilla

酝 酿出了一个超酷得新产品,可以看作是软件开发工具发展得另一个里程碑。现在

基于浏览器得三层开发结构非常流行,微软的.NET 的思路就是基于这个结构得。另

外,不考虑 服务器结构,就是基于网页得 JavaScript 小程序也对人很有吸引力,这

些产品得思路都是以 HTML 为用 户界面,但开发人员常常苦恼于 HTML 太简陋。而

Mozilla 得 XUL 解决了这个问题。XUL 是对 HTML 的扩展,完全兼容于 HTML,X

UL 基于 XML 格式对 HTML 进行了扩展,实现了完整、强大得图形用户界面设计功

能。可以设计出复杂得图形界面程序。实际上 mazilla 整个就是由 XUL 设计的。

XUL 用 Css 来控制界面风格、用 DTD 来替代字符串,方便的实现本地化,用 Java

sCript 来对用户界面 的操作作出反应,提供基本的逻辑编程,JavaScript 通过对象

文档接口 DOM 来动态控制用户界面。同时 JavasCript 通过调用 Mozilla 提供的丰

富的底层 API 来实现强大的功能。Mozilla 提供了功能强大的 API 可以进行文件操

作、网络操作、图形操作等各种操作,并且这种 API 是完全跨平台的。最后,Mozil

la 用 RDF 格式来存储独立于界面的数据。总结:XUL 由于兼容 HTML,提供了最强

大的用户界面的定制,DTD 提供了最方便的本地化。XUL、JavasCript、RDF 提供了

显示、逻辑、数据的分离。Mozilla 的底层 API 提供了跨平台的强大编程能力。希

望大家都来关心 Mozilla。[编辑] 最接近人类语言的编程语言-REBOL REBOL 的详

细资料见 www.xiexiebang.combinator

ial Problems 组合问题 Sorting 排序 Searching 查找 Median and Selection 中位

数 Generating Permutations 排列生成 Generating Subsets 子集生成 Generating

Partitions 划分生成 Generating Graphs 图的生成 Calendrical Calculations 日

期 Job Scheduling 工程安排 Satisfiability 可满足性 Graph Problems--polyn

omial 图论-多项式算法 Connected Components 连通分支 Topological Sorting 拓

扑排序

Minimum Spanning Tree 最小生成树 Shortest Path 最短路径 Transitive Cl

osure and Reduction 传递闭包 Matching 匹配 Eulerian Cycle / Chinese Postma

n Euler 回路/中国邮路 Edge and Vertex Connectivity 割边/割点 Network Flow

网络流 Drawing Graphs Nicely 图的描绘 Drawing Trees 树的描绘 Planarity Det

ection and Embedding平面性检测和嵌入 Graph Problems--hard 图论-NP 问题

Clique 最大团 Independent Set 独立集 Vertex Cover 点覆盖 Traveling Salesma n Problem 旅行商问题 Hamiltonian Cycle Hamilton 回路 Graph Partition 图的划

分 Vertex Coloring 点染色 Edge Coloring 边染色 Graph Isomorphism 同构 Stei

ner Tree Steiner 树 Feedback Edge/Vertex Set 最大无环子图 Computational Ge

ometry 计算几何 Convex Hull 凸包 Triangulation 三角剖分 Voronoi Diagrams V

oronoi 图 Nearest Neighbor Search 最近点对查询 Range Search 范围查询 Point

Location 位置查询 Intersection Detection 碰撞测试 Bin Packing 装箱问题 Me

page 6 dial-Axis Transformation 中轴变换 Polygon Partitioning 多边形分割 Simplify

ing Polygons 多边形化简 Shape Similarity 相似多边形 Motion Planning 运动规

划 Maintaining Line Arrangements平面分割 Minkowski Sum Minkowski 和 Set a

nd String Problems 集合与串的问题 Set Cover 集合覆盖 Set Packing 集合配置

String Matching 模式匹配 Approximate String Matching 模糊匹配 Text Compres

sion 压缩

Cryptography 密码 Finite State Machine Minimization 有穷自动机简化 Lo

ngest Common Substring 最长公共子串 Shortest Common Superstring 最短公共父

串 DP——Dynamic Programming——动态规划 recursion —— 递归 编程词汇 A2A

integration A2A 整合 abstract 抽象的 abstract base class(ABC)抽象基类 abs

tract class 抽象类 abstraction 抽象、抽象物、抽象性 access 存取、访问 acce

ss level 访问级别 access function 访问函数 account 账户 action active 动作

活动的 activate 激活 actual parameter 实参 adapter 适配器 add-in 插件 add

ress 地址 address space 地址空间 address-of operator 取地址操作符 ADL(arg

ument-dependent lookup)ADO(ActiveX Data Object)ActiveX 数据对象 advanced

高级的 aggregation 聚合、聚集 algorithm 算法 alias 别名 align 排列、对齐 a llocate 分配、配置 allocator 分配器、配置器 angle bracket 尖括号 annotatio

n 注解、评注 API(Application Programming Interface)应用(程序)编程接口 ap

p domain(application domain)应用域 application 应用、应用程序 application

framework 应用程序框架 appearance 外观 append 附加 architecture 架构、体系

结构

archive file 归档文件、存档文件 argument 引数(传给函式的值)。参见 par

ameter array 数组 arrow operator 箭头操作符 ASP(Active Server Page)活动服务

器页面 ASP.NET worker process ASP.NET 工作者进程 assembly 装配件、配件 汇编

语言 装配件清单 assembly language assembly manifest assert(ion)断言 assig

n 赋值 assignment 赋值、分配 assignment operator 赋值操作符 associated 相关 的、相关联的 associative container 关联式容器(对应 sequential container)a

synchronous 异步的 atomic attribute 原子的 原子操作 特性、属性 atomic oper

ation authentication service 验证服务 authorization 授权 audio A.I.音频 人

工智能 背景、后台(进程)向后兼容、向下兼容

B2B integration B2B 整合、B2B 集成(business-to-business integration)

background backup 备份 backward compatible backup device 备份设备 backup f

ile 备份文件 bandwidth 带宽 base class 基类 base type 基类型 batch 批处理

BCL(base class library)基类库 binary 二进制 binary search 二分查找 binary

tree 二叉树 binary function 双参函数 binary large object 二进制大对象 bin

ary operator 二元操作符 binding 绑定 bit 位 bitmap 位图 bitwise 按位⋯.bitwise copy 为单元进行复制;位元逐一复制,按位拷

bitwise operation 按位运算 block 块、区块、语句块 bookkeeping 簿记 bo

olean 布林值(真假值,true 或 false)border 边框 bounds checking 边界检查 b oxing 装箱、装箱转换 brace(curly brace)大括号、花括号 bracket(square br

akcet)中括号、方括号 breakpoint 断点 browser applications 浏览器应用(程序)browser-accessible application 可经由浏览器访问的应用程序 build 编连(专指

编译和连接 built-in 内建、内置 bus 总线 business 业务、商务(看场合)busine

ss Logic 业务逻辑 business rules 业务规则 buttons 按钮 bug 臭虫 by/through

通过 byte 位元组(由 8 bits 组成)cache 高速缓存 calendar 日历 call 调用 c

allback 回调 call-level interface(CLI)调用级接口(CLI)call operator 调用操

作符 candidate key 候选键(for database)cascading delete 级联删除(for da

tabase)cascading update 级联更新(for database)casting catalog chain 转型、造型转换 目录 链(function calls)character 字符 character format 字符格式 character set 字符集 CHECK c

page 7 onstraints CHECK 约束(for database)checkpoint 检查点(for database)chec

k box 复选框 check button 复选按钮 child class 子类 CIL(common intermedia

te language)通用中间语言、通用中介语言

class 类 类定义 类厂 类库 类装载器 类模板 类模板特化

class declaration 类声明 class definition class factory class library

class loader class template class derivation list 类继承列表 class hierar

chy 类层次结构

class template partial specializations 类模板部分特化 class template

specializations classification 分类 clause 子句 client application 客户端应

用程序 client cursor 客户端游标(for database)code page 代码页 cleanup 清

理、清除 通用语言基础设施 CLI(Common Language Infrastructure)client 客户、客户端 client area 客户区 client-server 客户机/服务器、客户端/服务器 cli pboard 剪贴板 clone 克隆 CLS(common language specification)通用语言规范

code access security 代码访问安全 COFF(Common Object File Format)collect

ion 集合 COM(Component Object Model)组件对象模型 combo box 组合框 comman

d line 命令行 comment 注释 commit 提交(for database)communication 通讯 c

ompatible 兼容 compile time 编译期、编译时 compiler 编译器 component 组件

composite index 复合索引、组合索引(for database)composite key 复合键、组

合键(for database)composition concept 概念 concrete 具体的 concrete clas

s 具体类 concurrency 并发、并发机制 复合、组合 通用对象文件格式 constraint 约束(for database)configuration 配置、组态 connection co

nsole constant 连接(for database)connection pooling 连接池 控制台 常量 construct 构件、成分、概念、构造(for language)constructor(ctor)构

造函数、构造器 container 容器 containment 包容 context 环境、上下文 contro

l 控件 cookie(不译)copy CORBA cover 拷贝 通用对象请求中介架构(Common Obj

ect Request Broker Architecture)覆盖、涵盖 创建、生成 交叉表查询(for dat

abase)create/creation crosstab query CRTP(curiously recurring template pattern)CTS(common type system)通

用类型系统 cube 多维数据集(for database)cursor 光标 cursor 游标(for dat

abase)custom 定制、自定义 data 数据 数据连接(for database)data connecti

on Data Control Language(DCL)数据控制语言(DCL)(for database)Data Def

inition Language(DDL)数据定义语言(DDL)(for database)data dictionary 数

据字典(for database)data dictionary view 数据字典视图(for database)dat

a file 数据文件(for database)data integrity 数据完整性(for database)da

ta manipulation language(DML)数据操作语言(DML)(for database)data mart 数

据集市(for database)data pump 数据抽取(for database)data scrubbing 数据

清理(for database)data source 数据源(for database)数据仓库(for databa

se)Data source name(DSN)数据源名称(DSN)(for database)data warehouse d

ataset 数据集(for database)database 数据库(for database)database catalog 数据库目录(for datab

ase)database diagram 数据关系图(for database)database file 数据库文件(for database)database object database owner database role 数据库对象(for database)数据库所有者(for database)数据库角色(for

database)database project 数据库工程(for database)database schema 数据库模式、数据库架构(for database)database script 数据库脚本(for database)data

-bound data member dataset data source data table datagram 数据绑定(for d

atabase)数据成员、成员变量 数据源(for database)数据表(for database)数

page 8 据报文 data-aware control 数据感知控件(for database)数据集(for database)data structure 数据结构

DBMS(database management system)数据库管理系统(for database)DCOM(distributed COM)分布式 COM dead lock 死锁(for database)deallocate 归还 d

ebug debugger decay 调试 调试器 退化

decision support 决策支持 declaration 声明 declarative referential in

tegrity(DRI)声明引用完整性(DRI)(for database)deduction 推导 DEFAULT con

straint 默认约束(for database)default database 默认数据库(for database)

default instance 默认实例(for database)default result set 默认结果集(f

or database)default defer delegate 缺省、默认值 推迟 委托 definition 定义 delegation 委托 dependent name deploy 部署 dereferenc

e 解引用 dereference operator(提领)运算子 derived class 派生类 design by

contract 契约式设计 design pattern 设计模式 destroy device 销毁 设备 destr

uctor(dtor)析构函数、析构器

DHTML(dynamic HyperText Markup Language)动态超文本标记语言 dialog di

gest 对话框 摘要

digital 数字的 DIME(Direct Internet Message Encapsulation)直接 Inter

net 消息封装 directive(编译)指示符 directory 目录 dirty pages 脏页(for d

atabase)dirty read 脏读(for database)disassembler 反汇编器 DISCO(Disco

very of Web Services)Web Services 的查找 disk 盘 dispatch 调度、分派、派发

(我喜欢“调度”)DISPID(Dispatch Identifier)分派标识符 distributed comp

uting 分布式计算 distributed query document 文档 DOM(Document Object Mode

l)文档对象模型dot operator(圆)点操作符 driver 驱动(程序)DTD(document ty

pe definition)文档类型定义 double-byte character set(DBCS)双字节字符集(D

BCS)dump 转储 动态游标(for database)动态筛选(for database)动态锁定(f

or database)dump file 转储文件 dynamic cursor dynamic filter dynamic lock

ing 分布式查询(for database)DNA(Distributed interNet Application)分布式

网间应用程序

dynamic recovery 动态恢复(for database)dynamic snapshot 动态快照(f

or database)dynamic SQL statements 动态 SQL 语句(for database)dynamic a

ssembly 动态装配件、动态配件 dynamic binding 动态绑定 EAI(enterprise appl

ication integration)企业应用程序集成(整合)EBCO(empty base class optimiza

tion)e-business 电子商务 空基类优化(机制)

EDI(Dlectronic Data Interchange)电子数据交换 efficiency 效率 efficie nt 高效 end-to-end authentication 端对端身份验证 end user 最终用户 engine

引擎 封装 entity 实体 encapsulation enclosing class 外围类别(与巢状类别 nested class 有关)enum(enumerat

ion)枚举 enumerators 枚举成员、枚举器 equal equality error log 相等 相等性

错误日志(for database)equality operator 等号操作符 escape code 转义码 escape character 转义

符、转义字符 exclusive lock evaluate 评估 event 事件 event driven 事件驱动 的 event handler 事件处理器 evidence 证据 exception 异常 exception declara

tion 异常声明 exception handling 异常处理、异常处理机制 exception-safe 异常

安全的 exception specification 异常规范 exit 退出 explicit 显式 explicit s

pecialization 显式特化 export facility feature fetch 提取 field 字段(java)

field 字段(for database)field length 字段长度(for database)file 文件

filter 筛选(for database)finalization 终结 firewall 防火墙 finalizer 终结

器 firmware 固件 flag 标记 flash memory 闪存 flush 刷新 font 字体 foreign

key(FK)外键(FK)(for database)导出 设施、设备 特性、特征 expression 表达

式 fat client 胖客户端 排它锁(for database)explicit transaction 显式事务

(for database)page 9 form 窗体

formal parameter 形参 forward declaration 前置声明 forward-only 只向前 的 forward-only cursor 只向前游标(for database)fragmentation 碎片(for d

atabase)framework 框架 full specialization 完全特化 function 函数 functio

n call operator(即 operator())函数调用操作符 function object 函数对象 f

unction overloaded resolution 函数重载决议 functionality functor 仿函数 GA C(global assembly cache)全局装配件缓存、全局配件缓存 GC(Garbage collect

ion)game 游戏 generate 生成 generic 泛化的、一般化的、通用的 generic algo

rithm 通用算法 genericity 泛型 getter(相对于 setter)取值函数 global 全局的

global object 全局对象 global scope resolution operator 全局范围解析操作符

grant group group box GUI 授权(for database)组、群 分组框 图形界面 握手

granularity 粒度 垃圾回收(机制)、垃圾收集(机制)功能 function template 函

数模板

GUID(Globally Unique Identifier)全球唯一标识符 hand shaking handle

handler 句柄 处理器

hard-coded 硬编码的 hard-copy 截屏图 hard disk 硬盘 hardware 硬件 has

h table 散列表、哈希表 header file 头文件 heap 堆 help file 帮助文件 hiera

rchy 层次结构、继承体系

hierarchical data 阶层式数据、层次式数据 hook 钩子 热键 Host(applica

tion)宿主(应用程序)hot key hyperlink 超链接 HTML(HyperText Markup Langua

ge)超文本标记语言 HTTP pipeline HTTP 管道 HTTP(HyperText Transfer Protoc

ol)超文本传输协议 icon 图标 接口定义语言 IDE(Integrated Development Envi

ronment)集成开发环境 IDL(Interface Definition Language)identifier 标识符

idle time 空闲时间 if and only if 当且仅当 IL(Intermediate Language)中间

语言、中介语言 image 图象 IME 输入法 直接基类 直接派生类 immediate base im

mediate derived immediate updating 即时更新(for database)implicit transaction 隐式事

务(for database)incremental update 增量更新(for database)index impleme

nt implicit import infinite loop information infrastructure inheritance in

line initialization initialize inner join instance instantiated instantiat ion integrate 索引(for database)实现 隐式 导入 无限循环 信息 基础设施 继

承、继承机制 内联 初始化 初始化 内联接(for database)实例 具现化、实体化(常应用于 template)具现体、具现化实体(常应用于 template)集成、整合 implementation 实现、实现品

increment operator 增加操作符 infinite recursive 无限递归

inline expansion 内联展开 initialization list 初始化列表、初始值列表 in-place active 现场激活 integrity 完整性、一致性

integrity constraint 完整性约束(for database)interprocess communica

tion(IPC)进程间通讯(IPC)interacts 交互 interface 接口 for GUI 界面 inter

operability 互操作性、互操作能力 interpreter invariants invoke iterate 解释

器 不变性 调用 迭代 introspection 自省

isolation level 隔离级别(for database)iterative 反复的、迭代的 iter

ator 迭代器 iteration 迭代(回圈每次轮回称为一个 iteration)item key laser

项、条款、项目 键(for database)键列(for database)激光 JIT compilation

JIT 编译 即时编译 key column late binding 迟绑定 left outer join 左向外联接(for database)level l

ibrary lifetime link linkage linker list 阶、层例 库 生命期、寿命 连接、链

接 连接、链接 连接器、链接器 high level 高阶、高层

literal constant 字面常数 列表、表、链表 list box 列表框 livelock 活锁

page 10(for database)load 装载、加载 load balancing 负载平衡 loader 装载器、载入

器 local 局部的 local object lock 锁 log 日志 login 登录 login security mo

de 登录安全模式(for database)lookup table 查找表(for database)局部对象

loop lvalue macro maintain 循环 左值 机器码、机器代码 宏 维护

loose coupling 松散耦合 machine code managed code 受控代码、托管代码 Managed Extensions 受控扩充件、托管扩 展 managed object 受控对象、托管对象 mangled name manifest 清单 manipulato

r 操纵器(iostream 预先定义的一种东西)many-to-many relationship 多对多关系

(for database)many-to-one relationship 多对一关系(for database)marshal

列集 member 成员 成员取用运算子(有 dot 和 arrow 两种)成员函数 member acc

ess operator member function member initialization list 成员初始值列表 memberwise 以 member 为单元

⋯、members 逐一⋯memberwise copy memory menu 内存 菜单 memory leak 内存泄

漏 message 消息 message based 基于消息的 message loop 消息环 message queui

ng 消息队列 metadata 元数据 metaprogramming 元编程 method 方法 micro 微 mi

ddleware 中间件 middle tier 中间层 modeling 建模 modeling language 建模语言

modifier 修饰字、修饰符 modem module mouse mutex 调制解调器 模块 鼠标 互斥

元、互斥体 多维 OLAP(MOLAP)(for database)most derived class 最底层的派生类 mutable 可变的 multidimensional OLA

P(MOLAP)multithreaded server application 多线程服务器应用程序 multiuser multi

-tasking multi-thread 多用户 多任务 多线程 命名参数

multicast delegate 组播委托、多点委托 named parameter namespace nativ

e named pipe 命名管道 名字空间、命名空间 原生的、本地的

native code 本地码、本机码 Native Image Generator(NGEN)本地映像生成器

nested class 嵌套类 nested query 嵌套查询(for database)nested table 嵌套

表(for database)network 网络 network card 网卡 nondependent name object

object file 对象 目标文件 object based 基于对象的 object model 对象模型 ob

ject oriented 面向对象的 object pooling 对象池化 ODBC data source ODBC 数据

源(for database)ODBC driver ODBC 驱动程序(for database)OLE 自动化对象

(for database)OLE 自动化服务器(for database)ODR(one-definition rule)OLE Automation objects OLE Automation serve r OLE DB consumer OLE DB 使用者(for database)OLE DB for OLAP 用于 OLA

P 的 OLE DB(for database)OLE DB provider OLE DB 提供者(for database)on

e-to-many relationship 一对多关系(for database)one-to-one relationship 一

对一关系(for database)online analytical processing(OLAP)online redo lo

g online transaction processing(OLTP)Open Data Services(ODS)operand 操

作数 联机分析处理(OLAP)(for database)联机事务处理(OLTP)(for database)联

机重做日志(for database)开放式数据服务(ODS)(for database)Open Database Connectivity(ODBC)开放式数据库连接(ODBC)(for databas

e)operating system(OS)操作系统 operation 操作 operator option 操作符、运

算符 选项

optimizer 优化器

outer join 外联接(for database)overflow overhead overload 上限溢位(相对于 underflow)额外开销 重载 重载决议 重载的函数 overload resolution overloaded function override package palette para

llel overloaded operator 被重载的操作符 覆写、重载、重新定义 包 调色板 并行

page 11 packaging 打包

parameter 参数、形式参数、形参 parameter list 参数列表 parameterize p

arent class parentheses parse parser part 解析 解析器 零件、部件 传址(函式

引数的传递方式)(非正式用语)参数化 父类 圆括弧、圆括号

partial specialization 局部特化 pass by address pass by reference 传地

址、按引用传递 pass by value 按值传递 pattern 模式 可移植可执行文件 PDA(p

ersonal digital assistant)个人数字助理 PE(Portable Executable)file perfo

rmance persistence pixel 像素 placement delete placement new placeholder 占

位符 platform平台 性能 持久性

PInvoke(platform invoke service)平台调用服务

POD(plain old data(type))POI(point of instantiation)pointer 指针

poll 轮询 pooling 池化 polymorphism 多态 pop up port postfix 弹出式 端口

后缀

precedence 优先序(通常用于运算子的优先执行次序)prefix 前缀 预处理器

主表(for database)preprocessor primary table primary key(PK)主键(PK)(for database)primary template 原始模板 pri

mitive type 原始类型 print printer 打印 打印机

procedure 过程 procedural 过程式的、过程化的 process profile profiler

program 进程 评测 效能(性能)评测器 程序

programmer 程序员 programming 编程、程序设计 progress bar 进度指示器

project property protocol 项目、工程 属性 协议

pseudo code 伪码 qualified 经过资格修饰(例如加上 scope 运算子)qualif

ied name qualifier 修饰符 quality queue radian radio button raise range ra

nk raw 质量 队列 弧度 单选按钮 引发(常用来表示发出一个 exception)范围、区

间 等级 未经处理的

race condition 竞争条件(多线程环境常用语)random number 随机数

readOnly 只读 record 记录(for database)recordset 记录集(for databa

se recursive 递归 re-direction 重定向 refactoring refer 重构 引用、参考 reference 引用、参考 reference counting 引用计数

referential integrity(RI)引用完整性(RI)(for database)register refl

ection 寄存器 反射

refresh data 刷新数据(for database)regular expression 正则表达式 re

lational database 关系数据库 remote represent resolve resolution result se

t return return type return value revoke robust robustness roll back routi

ne row row lock rowset 远程 表述,表现 解析、决议 解析过程 结果集(for dat abase)返回 返回类型 返回值 remote request 远程请求

retrieve data 检索数据

right outer join 右向外联接(for database)撤销 健壮 健壮性 回滚(for

database)例程 行(for database)行锁(for database)行集(for database)roll forward 前滚(for database)RPC(remote procedure call)RPC(远程过程调用)runtime 执行期、运行期、执行时、运行时 rvalue 右值 save 保存 savepoint 保存点(for database)SAX(Simple API for XML)scalable 可伸缩的、可扩展的 schedule 调度 scheduler 调

度程序 schema scope 模式、纲目结构 作用域、生存空间 scroll bar 滚动条 scop

e operator 生存空间操作符 scope resolution operator 生存空间解析操作符 scr

een 屏幕 SDK(Software Development Kit)软件开发包 sealed class 密封类 sear

ch 查找

semantics 语义 semaphore 信号量 sequential container 序列式容器 serve

r serial 服务器、服务端 串行

serialization/serialize 序列化 server cursor 服务端游标、服务器游标(for database)session setter sibling signature slider 滑块 slot 槽 smart p

page 12 ointer 智能指针 SMTP(Simple Mail Transfer Protocol)snapshot snapshot 截屏

图 快照(for database)简单邮件传输协议 会话(for database)设值函数 同级

签名

shared lock 共享锁(for database)side effect 副作用 single-threaded

单线程

specialization 特化 specification 规范、规格 splitter software source

code 切分窗口 简单对象访问协议 软件 源码、源代码 SOAP(simple object acce

ss protocol)SQL(Structured Query Language)结构化查询语言(for database)stack 栈、堆栈 stack unwinding 叠辗转开解(此词用于 exception 主题)standard librar y 标准库 standard template library 标准模板库 stateless 无状态的 statement

语句、声明 static cursor 静态游标(for database)static SQL statements 静

态 SQL 语句(for database)stored procedure 存储过程(for database)status

bar 状态条 stream string stub 流 字符串 存根

subobject 子对象 subquery 子查询(for database)subroutine 子例程 sub

script operator 下标操作符 subset 子集

subtype 子类型 support 支持 suspend 挂起 symbol syntax 记号 语法 系统

数据库(for database)系统表(for database)system databases system tables table 表(for database)table lock 表锁(for database)table-level constraint 表级约束(for d

atabase)tape backup 磁带备份(for database)target 标的,目标 task switch

工作切换 TCP(Transport Control Protocol)template template-id template ar

gument deduction template parameter 模板参数 模板参数推导 template explici

t specialization 模板显式特化 模板 传输控制协议

template template parameter temporary object 临时对象 temporary table

临时表(for database)text 文本 text file 文本文件 thin client 瘦客户端 t

hird-party 第三方 thread 线程 thread-safe 线程安全的 throw 抛出、引发(常指

发出一个 exception)token 符号、标记、令牌(看场合)trace 跟踪 transactio

n 事务(for database)transaction log 事务日志(for database)transaction

rollback 事务回滚(for database)transactional replication 事务复制(for d

atabase)translation unit 翻译单元 traverse 遍历 trigger 触发器(for datab

ase)two-phase commit 两阶段提交(for database)tuple two-phase lookup 两阶

段查找 type 类型 UDDI(Universary Description, Discovery and Integration)统 一描述、查询与集成

UML(unified modeling language)统一建模语言 unary function 单参函数 u

nary operator 一元操作符 unboxing underflow Union query unique index unmar

shal unqualified 拆箱、拆箱转换 下限溢位(相对于 overflow)联合查询(for da

tabase)唯一索引(for database)散集 未经限定的、未经修饰的 统一资源定位器

UNIQUE constraints UNIQUE 约束(for database)unmanaged code 非受控代

码、非托管代码

URI(Uniform Resource identifier)统一资源标识符 URL(Uniform Resourc

e Locator)user 用户 user interface 用户界面 value types 值类型 variable 变

量 vector viable video view 向量(一种容器,有点类似 array)可行的 视频 视图

VEE(Virtual Execution Engine)虚拟执行引擎 vendor 厂商 view 视图(for

database)虚拟机 虚拟内存 web 服务 WHERE 子句(for database)通配符搜索(for database)窗口 窗口函数 窗口过程 virtual function 虚函数 virtual machi

ne virtual memory vowel Web Services WHERE clause wildcard search window w

page 13 indow function window procedure wizard 向导 word 单词 包装、包装器 word pr

ocessor 字处理器 wrapper write enable 写启用(for database)write-ahead lo

g 预写日志(for database)write-only 只写 WSDL(Web Service Description La

nguage)Web Service 描述语言

元音字母

wildcard characters 通配符字符(for database)Windows authentication Windows 身份验证

XML Message Interface(XMI)XSD(XML Schema Definition)XML 消息接口 XML 模式定义语言

XML(eXtensible Markup Language)可扩展标记语言 XSL(eXtensible Style

sheet Language)可扩展样式表语言 XSLT(eXtensible Stylesheet Language Tran

sformation)可扩展样式表语言转换 xxx based 基于 xxx 的 xxx oriented 面向 xx

x page 14__

第五篇:从语言进步到编程

从语言进步到编程

1.语言和编程本是两码事

分不清语言和编程的人,估计很能学得好编程。

1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级语言,从高级语言到封装完善的编程框架,以后肯定还会出现更多高级的语言或是编程框架。

作为学习者,在初涉软件编程领域时,常常被众多的语言搞昏了头脑,被众多的编程框架折腾的晕头转向。在找不到软件编程规律之前,他们只能跟着所谓新技术走。正所谓C不流行了,要去学C++;C++不流行了,赶着学JAVA;MFC框架封装的不好,赶快去用.NET框架吧;还有太多的太多的名词,太多太多的中间件技术。某天在与一位程序员聊天时,他感言到:“现在的编程,就是数据库和网络,其它的都没什么用!”。是啊,连有经验的程序员都这么说,更何况那些没有编程经验的初学者。他们唯一能做的就是,什么新学什么,什么好学什么。到底,什么是新,什么是好?谁也说不清楚,倒是网上总有类似的大讨论,比较C++和JAVA的先进性,比较VC++和BCB优劣性。在这里,我只想告诫同学们,盲从只能让你晕得更长。

1.2 语言和编程其实两回事情

那么什么是编程?什么是好的编程?如果同学们能理解了这两句,我想你会发觉盲从编程新技术是一件很可怕也很可笑的事情。编程说到底就是向计算机说明一件事情,让计算机按照你的意图去做这件事情。事情的复杂性决定了说明的难度,即决定了编程的难度。编程的好坏其实就是说明事情的水平高低,如果你把事情说明的简明、扼要,而且还能为将来留有余地,那么你的编程就是好的。

语言又是什么呢?语言是人们与计算机交流的工具,人们借助编程语言来描述和说明要安排给计算机的事情。可见,语言是死的,编程是活的。前几日在网上发现一帖,把语言比作兵器,一个很生动形象的例子。对于不会编程的人,给他再好的兵器都是白搭;对于会编程的人,给他一把好兵器那是如虎添翼。《VC++编程技术与难点剖析》一书把语言比作猎枪,试想给你一把上等猎枪,如果你不会打猎的话,一样是一无所获。

可见,语言是形,编程是意;编程是语言的内在精神,语言是编程的外在载体。你把语言规范学得再好,如果不会编程的话,你依然会觉得茫然不知所措。当你领悟到编程思想时,你会发觉,其实用C语言也能写出面向对象的程序1。

1.3 语言靠学、编程需悟

回首十几年的英语学习,我不禁汗颜,除了背得一些单词,记住一些语法外,我张口还是说不出一句完整的英语句子来。一个深刻的体会便是就是不知道该怎么说英语。我想大部分同学对于软件编程的感受也是类似的,给你一个编程要求,即便你掌握了所有的C++语言规则,你还是觉得不知道该怎么编,不知道该从那里下手。

正如前面所述,语言是死的、是形。它是由一系列关键字和语法规则组成。掌握这些关键字和语法规则并不需要太长时间,因为这些内容远比英语单词要少的多的多。这部分内容是容易讲授,也容易被学生掌握。

关键字和语法规则是死的,但是如何灵活运用这些规则、综合这些规则确是活的。而这些正是编程真实含义所在。因此,运用语法规则描述一件事情其实非常复杂,实现功能只是最基本的,之上还有运行效率问题、扩展性问题、可移植性问题等等。同学们在学习编程时,一是需要老师在课堂上引导,但老师的引导只能是启发大家的思维,激发大家的思考;更多的还是今后在实际工作中的经验积累和不断的思考。不管是自己写代码,还是看别人代码,你只要思考清楚如下几个问题就可以了:

1)为什么要这么设计代码,这样设计有何优点; 2)导致这些优点的原因是什么;

3)把优点总结出来,尝试在自己的程序中去尽量运用这些优点;

4)这些优点能否再改进,并如何改进。

如果能坚持能做到前三点,那已经相当不得了了。最后一点是为大师级人物准备的,说不定在读某位未来可能就是××公司的首席架构设计师哦。

2.在使用语言中进化编程思想

从语言到编程,从编程到语言 ——语言学习和使用的过程是编程思想的积累过程,当你掌握思想之后,任何的语言形式都能体现你的思想精华。所以,首先把语言学习好吧。你真的掌握一门语言了吗?看看下面的文字再下结论不迟。

2.1 用低级语言去理解高级语言 低级语言是高级语言的基础,当我们对于一个高级语言的知识点难以把握时,最好的办法、也是最有效的办法就是去低级语言中寻求规律、寻求答案、寻找原则。这里我想举个例子,即指针的理解和使用。

指针可以说是一个没有完全完成从汇编语言到高级语言进化的变量,它是一个介于汇编语言和高级语言的东东。而C语言也是因为它,才变得更加的灵活强大,同时也让许多初学者望指针生畏。指针变量保存的是内存地址,地址访问体现了低级语言的特征;指针变量具有类型,变量类型体现了高级语言的特征。不要以为你知道指针是个内存地址,你就能从汇编语言上理解指针、使用好指针。对于指针的理解和使用还必须注意如下几个方面: 1)可执行程序中的什么元素会占用内存空间?与语言代码相关的,一般是数据和函数执行代码,这导致变量指针和函数指针概念的出现;

2)可执行程序是如何开辟和释放内存空间的?在C语言中包括局部变量、全局变量、静态变量、malloc/free函数对、结构体、联合体等等,到了C++语言又增加了对象(包括成员变量、静态成员变量、普通成员函数、虚拟函数和虚拟函数表)、new/delete操作符对,在Object Pascal语言中甚至还有类3。可见,只要是语言中使用到的系统资源(包括变量和函数)都需要关心它在内存中的开辟和释放机制。

3)只有在掌握2)的基础之上,你才能准确的知道代码中的指针是否指向存在的或是未被释放的内存空间,而这是正确使用指针的重要原则之一。

4)如果是变量指针,指针类型对于四个字节的内存地址而言毫无意义。它的引入,不过是在告诉C/C++语言编译器,当代码对指针进行加减操作时,它该如何以多大的步长增减地址;当代码对指针进行取值(*,->)操作时,它该以多大的位移取多大内存空间的值。仅此而已。

5)如果是函数指针,指针类型对于内存地址也是毫无意义的。它的引入,是在告诉C/C++语言编译器,当代码使用指针调用函数时,它该如何为函数调用生成汇编代码。函数的调用会涉及一些堆栈或是寄存器操作,而不同的输入、输出参数对应的这些操作是不相同的。当我们分析清楚可执行程序的内存开辟和释放机制时,当我们从编译器的角度去理解指针类型的含义时,可以自然的总结如下的指针使用原则:

1)保证对指针取值时,指针指向的内存空间是有效的

2)存储指针时,把它当作占四个字节的任何变量,指针指向的类型可以是任何变量类型。

3)对指针取值操作时,确保恰当的指针类型的转型。讲到这里,请大家再去理解以前课本中反反复复提到的传值和传地址的区别。其实把指针参数理解为传地址不过是便于理解吧。如果你从汇编角度理解,传值和传地址的操作是完全一样。当你从指针本身的内容来看,传地址就是在传递指针的地址值,就是传值,和传递个int变量毫无区别;当你从指针所指向的内容来看,就是一般书中所讲述的传地址。

高级语言便于理解、易于掌握,也大大提高了程序员的编程效率。但是,如果我们仅停留在高级语言层面上,不去究根问底,不去追根溯源,那我们只能算是浅尝辄止。

其实,“用低级语言去理解高级语言”也意味着用底层的知识去理解上层的东西,用基础的知识去把握基础之上的东西。好比用汇编语言去理解高级语言、用Win32、OOP和C++去理解MFC框架、用Win32、OOP和Object Pascal去理解VCL框架、用Windows Socket、OOP和C++去理解VC++中的网络编程技术、用Windows Socket、OOP和Object Pascal去理解Delphi中的网络控件。诸如此类的例子真是举不胜数。

请记住,当你站在优秀平台上舞刀弄棒、学个一招半式时,千万别沉浸于表面上的成功。试想,当你用BCB的几个数据库控件成功访问数据库的时候,有多少东西是你自己做的,你又学到了多少东西。可以说,你所学到的不过是类似于打字操作、文档编辑之类的简单操作而已。

任何高级的编程技术或是平台都不是空穴来风的。努力把它们的基础和结构分析清楚,你至少可以得到如下两点好处:

1)对于新技术或新平台的全面掌握和灵活运用,正所谓庖丁解牛,咴咴呼而游刃有余。2)从深入分析和探索中获取编程的思想,正所谓深入成就深度。

2.2 体会语言设计者的初衷 正如上面所述,任何新的编程技术或平台都不是空穴来风,更不是某位天才一拍脑袋就想出来的。创新肯定是有源动力的,新技术肯定是为解决既有技术的不足才出现的。说白了创新就是为了更高、更快、更强。试想,如果你能把握住新技术的来龙去脉,理解设计者的良苦用心,那你就可以把这项新技术在恰当的时间、恰当的地点、以最恰当的方式使用起来。在此我也想举个例子,即虚函数和动态函数4。

虚函数是C++语言中的重要概念之一。简单的说,虚函数因多态而生,多态因抽象统一接口(接口可以理解为方法)而起。虚函数出现的根源就是抽象统一的接口。

抽象是人类探索、描述客观世界的利器。如何把纷繁复杂、变化多样的各种事物描述清楚,唯一的方法就是抽象。语言也不例外。水果、衣服、车、食物、粮食等等,这些都是抽象出来的名词,正如在课堂中所说,“吃水果可以吃尽天下所有的水果,不管是已发现的,还是未发现的”。抽象抓住了事物的本质与共性。保证了相对的稳定性,实现了以不变应万变的强大功能5。可见,只有抽象才能统一接口。

通过抽象,可以把各种各样事物的接口都抽象成一个接口。例如,可以把吃苹果、吃梨子、吃菠萝、吃西瓜等等都抽象成吃水果。但是,在真正使用抽象接口时,必须把抽象接口还原到具体事物的真实接口中去。例如,水果是抽象的,没法吃,吃水果这个抽象方法一定要还原到吃具体水果中去才有意义。这样,一个抽象统一的接口,却有许多种具体的表现形式,这便是是多态。

当我们编写一个类库时,如果能尽可能多的使用抽象的思想去统一类库(或是各个子类)的接口,那么至少有如下几点好处:

1)对于使用者,由于接口简单,大大简化了学习类库和使用类库的工作; 2)对于使用者,由于接口统一,相对稳定,使用者编写出来的代码具有很强的扩展性,即便在今后类库又派生出新的子类,使用者编写的代码也无需作任何修改,因为接口是统一的,相对固定的。

3)对于设计者,由于应用了抽象,类库的层次清晰。当派生新的子类时,父类已经划定了抽象的框框,按照既有框框实现具体接口即可。

试想,如果能够理解虚函数的设计初衷是为了抽象统一接口,那么在父类设计中该如何设计虚函数也就把握住了最根本的原则,即能够从多种对象中抽象统一出来,且每个对象的具体实现又都不同的方法,都设计为虚函数。

至此,文章已经分析了C++引入虚函数的根本原因。但此后,在BCB中,Borland公司的天才们又设计出能够完全实现多态机制的另一种方法,动态函数。有心人不禁要问,既然虚函数可以实现多态机制,干吗还要引入动态函数呢?这两个函数有什么区别呢?孰优孰劣呢?引入动态函数的初衷又是什么呢?

呵呵,疑问总是探索未知领域的源动力。而疑问意识并不是每个人都具备的,越是大家,越是对习以为常的事物产生疑问。好比牛顿被苹果砸了脑袋,这引发了他研究万有引力。我想,绝大部分人被苹果砸到吐血都不会产生类似疑问。思维定式和传统教育的灌输扼杀了绝大部分人的疑问意识,也就同时扼杀了他们的探索、创新意识。话题在回到动态函数。

C++语言通过虚拟函数表VMT实现了虚拟函数的多态机制。对于VMT的内存分配,许多C++著作中都作了详细说明,在此不再赘述。了解VMT的内存分配机制之后,你会发现,C++设计者对于VMT的设计原则是以存储空间换取调用时间,即重复存储虚拟函数地址,保证虚拟函数的调用不会导致很多的指针访问。不管是父类还是子类,不管子类是否覆盖了父类的虚拟函数,虚拟函数的调用都只会触发相同数量的指针访问,既由对象指针(this)获取VMT指针,由VMT指针获取虚拟函数指针。

以存储空间换取调用时间的设计原则,提高了调用虚拟函数的运行效率,但耗费了较多的存储空间。在写一般C++程序时,可能并不会感觉到虚拟函数的这一设计有什么缺点。但是,如果父类需要定义很多的虚拟函数,只有很小一部分的虚拟函数会被子类覆盖或调用,而且类的派生层次又非常深(如有7层以上)。在这种情况下,每个子类VMT都会因父类定义太多的虚拟函数而占据大量的内存空间,但程序运行时,通过子类VMT调用的虚拟函数又很少。此时,以存储空间换取调用时间的设计原则就变得效率低下,不太适用了。有同学会问,会存在以上的特殊情况吗?的确存在,在MFC和VCL封装Win32消息机制时,就面临上述类似的问题。消息封装的最初思路就是在父类中为每个消息定义一个虚拟函数,作为消息的处理函数。如果子类控件需要处理某个消息,它就覆盖与该消息对应的虚拟函数。试想,Windows有上百个消息,为每个消息定义一个虚拟函数,也就是至少100个虚拟函数。可是子类控件对于大部分消息都是默认处理,它只会处理一小部分消息,即覆

盖一小部分虚拟函数。可见,使用上述的完全虚拟函数的设计方法来实现消息的封装显然存在较大问题,一是VMT会消耗太多的内存空间;二是对VMT内存空间的访问率、使用率低下。

基于上述缺点,MFC和VCL对于消息的封装不得不另换思路。为此,Microsoft为MFC引入了消息映射网的设计思路6,而Borland仰仗在编译器设计上的深厚功力,引入了动态函数/消息函数。动态函数的设计原则与虚拟函数恰恰相反,即以调用时间换取存储空间。正如虚拟函数指针存放在VMT中一样,动态函数指针也存放在类似的DMT中。但DMT只存储本类覆盖或是定义的虚拟函数,不存储父类的虚拟函数。而且,子类DMT会存储一个指向父类DMT的指针,如此设计是为了子类对象能够调用到父类定义的虚拟函数。有个极端的情况就是,子类对象调用根类定义的虚拟函数,此时的动态函数调用因为多层父类DMT的访问而变得效率低下。

可见,如果我们能够很好的把握设计者的初衷,深入到设计者当时所处的场景,理解设计者当时的设计思路,自然就能够统观全局的把握新技术、心领神会的运用新技术。

2.3 其它的建议

还有些其它的建议,不成体系,单另列出:

1)多编写一些封装的小例子来培养自己面向对象的编程思想,如字符串类CString、文件类CFile、内存管理类CBuffer。

2)要有选择的阅读参考书。如今的计算机书籍可谓良莠不齐,也让初学者挑花了眼睛。我觉得书籍的选择应遵循如下原则:不买只有例子的、只会抄袭的书;只买一本大全、宝典之类的工具查询书;多买讲解编程思想、源码分析的书。

冰冻三尺非一日之寒,从语言进步到编程需要长时间的积累和大量的思考。当质疑、探索、总结、再运用的方法帮助你掌握编程后,你会发现你所获得的东西远比编程本身要多得太多、高得太多、广得太多。

下载C语言编程期末试题答案word格式文档
下载C语言编程期末试题答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Java编程语言面试题

    西安英泰移动通信学院S2级Java编程语言测试题 1 Java编程语言面试题 一、简答题 1、 简述用Java编程语言编写、编译、解释和执行过程。 2、 简述在Java JDK中,java.exe程序的......

    T-SQL语言编程(5篇材料)

    南京信息工程大学实验(实习)报告 实验日期12.13得分指导教师方忠进系计算机专业软件工程年级2011班次3姓名张渊学号20112344931 一.实验目的 1. 掌握流控制语句的基本语法 2.......

    C语言经典编程题(推荐)

    C语言经典编程题 题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。 [cpp] view plain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9.......

    经典C语言编程100例

    经典C语言编程100例(1-30) 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。......

    vb语言编程教案

    课题:vb语言编程概述 课 时:2课时 授课时间:2011.09.05 课堂类型:讲授 教学目的:1.熟悉VB界面和VB集成开发环境; 2.在实际操作中学会编简单的VB应用程序; 教学要求:1. 掌握VB基础知......

    c语言编程练习

    本实验所有题目均要求使用指针。 1.写一函数,将一个3*3的整型矩阵转置。2.将两个按升序排列的数组合并成一个数组,并使合并后的数组也按升序排列。 要求: (1)输入两个数组(按升序);......

    C语言编程100题

    经典C语言程序设计100例 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......

    c语言编程心得交流

    “C语言编程心得交流”主题活动策划书一、活动背景二、活动目的及意通过本次活动,希望同学对C语言编程有一个重温二深刻的认识,并且认识到是“从问题到编程”的思考和工作过程......