一. 选择题(共40道)
1. 用户开发程序时需要经常在窗体和编辑器窗口之间来回切换,可使用快捷键()。
A、 F12和F11
B、 F12和F13
C、 F12和Ctrl+F12
D、 F12和Alt+F12
E、F12和Shift+F12
2. 某函数如下:
Function check(n,k:Integer):Integer;
Var m:Integer;
Begin
Repeat
m:=n mod 10;
n:=n div 10;
K:=k-1
Until k=0;
Check:=m
End;
若调用语句y:=check(3725,3),运行后y值为:()
A、 7
B、 5
C、 2
D、 0
3. 以下那个组件不可以由用户输入编辑文本()
A、 TEdit
B、 TcomboBox
C、 TMaskEdit
D、 Tlabel
E、 TStringGrid
4. 一个对象类可以继承和直接使用它的父类的所有成员,除了:()
A、 public域
B、 private域
C、 protected域和private域
D、 protected域和方法
E、 private域和方法
5. Delph没有用到的文件类型有()。
A、.frm
B、.pas
C、.dfm
D、.dpr
E、.res
6. Query组件没有Table组件那样的( )属性。
A、 DataSource
B、 TableName
C、 Filtered
D、 Database
E、 UpdateObject
7. 下面关于属性的论述正确的是()。
A、 属性能实现write方法
B、 属性能实现read方法
C、 属性可以只读或只写
D、 属性可以公开或非公开
E、属性不能直接存取
8. 调试程序时,需要执行执行点所在的源代码行,并停留在下一个源代码行。可通过()菜单项进行。
A、 Run
B、 Step Over
C、 Trace Into
D、 Trace To Next Source Line
E、Run to Cursor
9. 设a是布尔变量,其它是整型变量,下面正确的赋值语句是( )
A、 x=y div 7
B、 x:=y:=z+1
C、 a:=x=y mod z
D、 x+y:=z
E、x+y=a
10. 表达式round(4.2) mod trunc(2.8)的值是( )
A、 0
B、 1
C、 2
D、 3
E、 4
11. 下列常量定义合法的是( )
A、 CONST width=7;
B、 CONST case=\'7\';
C、 CONST 1A=7.9;
D、 CONST century=year div 100;
E、 CONST 5<>7;
12. 以下运算符中运算优先级最高的是( )
A、 +
B、 OR
C、 >=
D、 DIV
E、 -
13. 已知a、b、c、d是同类型的简单变量,而且已有互不相同的值,执行下列语句:
b:=a; a:=c; d:=a; d:=b; 后,其值相等的变量是()
A、 a,c
B、 a,d
C、 c,b
D、 b,a
E、 无法确定
14. 已知有说明Var x:real;下列程序段中的错误为:( )
case x<=2.0 of
0:x:=0;
1:x:=1
end
A、 case表达式中有常数
B、 case常量和case表达式类型不一样
C、 赋值语句两边类型不一致
D、 case表达式为关系表达式
E、 case语法不规范
15. 以下语句的循环执行次数是( )
x:=37; y:=3
while y<=x do y:=y+y
A、 3
B、 4
C、 5
D、 6
E、 0
16. 程序 For I:=1 to 5 do
for j:=2 to I do
writeln(\'*\');
输出的\'*\'个数为( )
A、 5
B、 10
C、 15
D、 25
E、 30
17. 下列函数头合法的是( )
A、 function total(x:real);
B、 procedure ab(a,b:real):real;
C、 procedure sum;
D、 function f(var f:real):integer;
E、 procedure FontListBoxKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState;);
18. 已知函数如下:
function f(n:integer):integer;
begin
if n=0 then f:=0
else if n>0 then f:=f(n-2)
else f:=f(n+3)
end;
则调用f(5)的值是( )
A、 0
B、 1
C、 -1
D、 -2
E、 2
19. 下列类型中合法的是( )
A、 TYPE a=10..10;
B、 TYPE b=10..5;
C、 TYPE c=0..SQRT(10);
D、 TYPE d=10.0..20.0;
E、 TYPE e=random(9)..1
20. 已知 Var a:array[\'a\'..\'e\',1..4,boolean] of real;
则数组a中包含的元素的个数为()
A、 5
B、 20
C、 40
D、 11
E、 22
21. 已知 Var a:array[1..10] of integer;
k,I:integer;
程序段:
k:=1;
for I:=1 to 10 do
if a[i]>a[k] then
k:=I;
writeln(a[k]);
执行后输出的是( )
A、 数组中的平均值
B、 数组中的最大值
C、 数组中的最小值
D、 数组中的总和
E、 无法确定
22. 已知Var f:file of integer;则f所代表的文件是( )
A、 ASCII码文件
B、 二进制文件
C、 文本文件
D、 存放整数的文本文件
E、 HTML文件
23. 在VCL中( )是TDBListBox的父类
A、 TCustomListBox
B、 TListBox
C、 TDBDataset
D、 TDatabase
E、TDBEdit
24. 为让控件显示弹出式提示框文字,需用到控件的()属性
A、 Handle
B、 Hint
C、 ShowHint
D、 Showing
E、Visible
25. 发生在鼠标左键单击控件时的事件是()
A、 OnMouseDown
B、 OnMouseUp
C、 OnClick
D、 OnDbClick
E、OnEnter
26. 下列值中不是FormStyle属性的可能值的是( )
A、 fsNormal
B、 fsMIDChild
C、 fsMIDForm
D、 fsStayOnTop
E、fsDeskTop
27. 使用Delphi多线程的优点是( )
A、程序运行速度加快
B、不需要考虑同步访问共享资源与内存
C、程序编写更简单
D、可以在后台运行线程
E、不会是Windows出错
28. 有多种方法可以在OLE文档接收器中放置对象,但不包括( )
A、使用特定的菜单命令嵌入对象
B、从剪贴板粘贴对象,来建立新嵌入对象
C、从剪贴板粘贴-链接对象,来建立新嵌入对象
D、由服务器生成的文件中建立新对象。
E、通过ODBC接口,传递对象
29. 用于异常处理的关键字不包括( )
A、try
B、except
C、finally
D、raise
E、error
30. 以下说法不正确的是( )
A、VCL组件是Delphi最有效和最有用的组件
B、COM是OLE和ActiveX的基础
C、COM对象可用于任何Windows编程环境
D、VCL组件是COM对象
E、典型的COM对象包含在扩展名为.DLL或.OCX的文件中
31. Delphi中取值范围0到255的数据类型是()
A、ShortInt (-128~127)
B、Byte 0~255
C、SmallInt -32768~32767
D、Real
E、Word
32. 以下关于事件的说法不正确的是( )
A、不一定要响应某个组件所定义的所有事件
B、多个组件可以共享同一个事件处理程序
C、根据需要可以响应任何组件的事件
D、单击Object Inspector中的事件处理程序名,Code Editor将自动进入该事件的代码段。
E、事件的Sender参数是用来决定哪个组件产生了此事件
二. 是非题(共20道)
1. 从主菜单上选择Project|Syntax Check菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。( )
2. Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。( )
3. 粘贴时,如果作为容器的组件已被选择,剪贴板中的组件会当作容器组件的子组件来粘贴( )
4. 在由Delphi 管理的窗体类声明段中加进任何代码都会引起程序出错。( )
5. Delphi 可以在一个报表中使用一个以上的明细区( )
6. Delphi 可以象其它开发工具一样使用传统的资源,比如菜单可以作为资源加载,以利于实现多国语言环境。( )
7. 创建组件时可以定义属性的缺省值,但字符串属性不能有缺省值。( )
8. 声明一个常量后,在程序中则不可以改变这个常量的值。( )
9. 构造子必须通过类的一个有效实例来激活。( )
10. 在设计阶段Object Inspector显示被选组件的所有属性。( )
11. 在Delphi IDE中,按住Shift键,同时单击Components Palette上的组件图标,可以在窗体内放置多个同类组件。( )
12. 为减少编程中的错误,用户可以使用Delphi提供的系统函数IsValidIdent检验字符串是否合法。( )
13. 用户如果不在一个完整的事件响应过程添加任何代码,当保存或编译该项目时,该过程将被自动清除。(1)
14. 使用Runtime Packages技术可以将原先独立的可执行文件分解为动态链接库加上小的可执行文件,这样作的好处是所占磁盘空间比一个独立的可执行文件小。( )
15. Delphi和VB一样不能产生真正的可执行代码(本机代码),但是Delphi开发的程序比VB的运行速度快。( )
16. 大多数组件的属性可以在运行时改变,而且,有些只能在运行时刻改变。()
17. 对于用户的Delphi工程中创建的窗体及其组件的属性都保存在一个独立的描述文件,即扩展名为DSK的文件中。( )
18. Search菜单的Find Error命令是用来寻找运行时的错误,而不是寻找编译错误。()
19. Enabled属性不适用于非可视组件。( )
20. Delphi采用基于对象的引用模式,即类的每一个变量不保存对象的值,而保存一个引用或一个指针来说明对象存储的内存位置。( )
三. 改错题(共4道)
1. 指出下列代码错误并说明原因:
Var
I:Integer;(超出范围)
L:Long;
Begin
L:=32768;
I:=L;
End.
2. 指出下列代码错误并说明原因:
if n>37.5 then
AmountEarned:=(n-37.5)*HourlyRate*1.5+37.5*HourlyRate; (没有定义n, AmountEarned, HourlyRate)
else
AmountEarned:= n*HourlyRate;
3. 指出下列代码错误并说明原因:
while (total<max) and (sum<=max) and (sum<total)
do statement1;
4. 指出下列代码错误并说明原因:
procedure Tform1.TestBtnClick(Sender:Tobject);
var z,y,x:integer;
begin
x:=100;
y:=0;
try
z:=x div y;
except
on EdivByZero
do begin
z:=-1;
MessageDlg(\'Z\'+IntToStr(z),mtInformation,[mbOK],0);
end
End;
四. 问答题(共3道)
1. 在Delphi中,对话框与子窗口有什么不同?
答:
2. 使用私有域和方法的目的是什么?
答:
3 请叙述进程与线程的区别和联系?
答:
4 请说出ADOQuery. ExecSQL与ADOQuery.open的区别?
答:ExecSQL 用于执行没有返回数据机的SQL语句,如删除指定的记录,插入记录数据,修改记录数据等操作
OPEN 用来打开数据集,其作用与将active属性设置为true相同

五. 编程题(共3道)
1. 计算并输出300至500以内所有素数(即质数)中最大的前10个数之和k与300至500以内所有素数的个数j,并将结果输出到文件mydata.dat中。
2. 在Tform1.FormActive事件中编写代码,要求包括一个循环,在屏幕上随机的位置上用不同的颜色连续画线。
3. 请你针对test_tab表利用delphi写出完成对数据库查询,删除,插入,修改程序(其中相应字段有:name 类型char,age 类型char,birthday类型 datatime,条件参数可以自定义);

六. 设计题(共1道)
设计一个实用的Windows字体选择列表窗口。要求:
1) 用户可以在列表框中(TListBox)选择字体
2) 用户可以在微调框中(TSpinEdit)调整字体大小
3) 字体与大小以所见即所得的方式显示出来


一、A A D B A
B C C C A
A D A B B
B C? A A C
B D A B C
E D E E C?
B D
二、 T T T F T
F F F F F
T F T F F
T F T F F?
三、1、超出整数范围
2、else 前面有分号
3、代码运行没有错误,但是逻辑上sum<total<max,所以sum<=max不需要等于。
4、不能触发异常,因为Z的值没有被引用。
四、1、delphi中对话框实现的是WinAPI函数的封装,程序编译运行时,源代码中占用资源很小,子窗体相对大一些,此外,子窗体是一个类,可以很方便的进行继承和重载。
2、不允许派生类和实例访问,实现更好地封装和保护自己的类,清楚地向用户表明,他们无需关心这些与他们无关的项。
3、在支持线程的操作系统中,进程是分配资源的最小单位,线程是独立运行的最小单位。每个进程至少有一个线程,我们称之为主线程。一个进程可以创建、拥有多个线程。
4、当adoquery执行的是select操作时,使用OPEN 用来打开数据集;当adoquery执行的是没有返回数据集的SQL语句(insert ,delete,update,create table等)时,使用ExecSQL执行。






F5可以设置断点,F7是单步跟踪,F8是单步跟踪(不进入子函数), SHIFT + F7 是用于跟踪汇编代码 SHIFT + F8 是运行到此函数或过程结束处. F4 是运行到光标处. 然后可以选择你喜欢的方法自由跟踪. 你调试的时候在CPU窗口就会知道F7以及Shift+F7的差别了:)