您的当前位置:首页正文

Delphi试题含答案

2022-11-25 来源:好走旅游网


《可视化程序设计》试卷

适用专业及层次(由出卷教研室填写):信息管理与信息系统、医学信息工程本科 姓名: 班级: 学号:

(此试卷共8页,答案请填写在答题纸上,答案填写在试卷上者答题无效)

一、单项选择题(15分,每小题1分)

1. 一个Delphi应用程序必有一个 文件和至少一个单元文件。

A.程序 B.工程 C.数据 D.图形 2. 在窗体中完成多个控件整齐排列,应使用的操作是 。

A.Align B.Bring to front C.Scale D.Send to back 3. 下列不能用来定义子界类型是 。

A.实型数据(Real) B.用户定义的任何顺序类型 C.字符型(Char) D.整型(Integer)

4. 在 事件处理程序中编写代码,可以处理edit编辑框中输入的字符,。

A.OnClick B.OnEnter C.OnMouseUp D.OnKeyPress 5. 关于变量,全局变量与局部变量名相同时,下列说法错误的是 。

A.在过程之外是全局变量作用 B.过程内部是局部变量作用 C.在过程之外全局变量无作用

D.在过程之外是全局变量作用而在内部是局部变量作用 6. procedure和function的结构和功能相似, 。

A.前者可以取代后者 B.后者可以取代前者

C.但前者有返回值,后者没有 D.二者都可以返回一个值 7. 动态数组与静态数组的区别是 。

A.是否是一维数组 B.元素类型是否是整型 C.定义时是否明确了数组元素的个数 D.元素类型是否一致 8. 用于建立菜单项的加速键的字符是 。

A.^ B.# C.& D.@ 9. 绘制封闭图形时,要指定填充色的颜色时,可以设置画布对象的 属性。

A. pen.color B. brush.color C. pen.style D. bursh.style 10. BDE的中文含义是 ,它是数据库应用中的一种连接方法。

A.数据库连接 B.数据库引擎 C.数据库文件 D.开放式数据库 11. 下列语句中,立即中断当前循环继续执行下一次循环的语句是 。

A.break; B.continue; C.exit; D.goto;

12. 如果一个元件在运行时可见,它必须从___________________类派生。

A. TObject B. TPersistent C. Tcomponent D. TControl 13. TADOConnection 组件用于控制当连接一个数据库时是否出现一个登录对话框

的属性是______________。

第 1 页 共 10 页

A.Connected B.Cursorlocation C.LoginPrompt D.ConnectionString 14. 下列中错误的PASCAL表达式是 。

A.20 DIV 2*5 B.16 DIV 4 C.10e3*5 D. 4.018 DIV 3 15. 在消息窗口左上角显示绿色?符号提示确认,应该使用 。

A. ShowMessage B. InputBox C. MessageDlg D. Inputquery

二、填空题(10分,每空1分)

过程与函数是程序设计语言中的重要概念,也是实现 (16) 设计思想的重要手段。它的要点之一就是对一个复杂问题采用“分而治之”的策略—— (17) 。把一个较大的程序划分成若干个部分,每个部分只完成一个或若干个功能。每个功能可以用一个程序段来实现,这个程序段称为 (18)。根据其是否有(19)可分为过程与函数两种。

调用过程与函数的目的,就是要完成某一工作。调用者要把 (20) 告诉过程与函数,过程与函数要把 (21) 传回调用者。通常在编制一个子程序时,要考虑它需要哪些输入量,进行处理和运算后要输出哪些输出量。正确地提供输入输出是子程序使用的关键问题。

Delphi中在单元的 (22) 声明的过程和函数,可以且只能被此单元的事件处理过程使用。要让过程和函数可以被其他的程序单元使用,则需要将过程或函数的标题部分放在单元中的 (23) 部分,而把含标题的整个过程或函数放在单元的 (24) 部分,并在要访问这个过程或函数的单元的 (25) 子句中加入说明这个过程或函数的单元名称。 备选项:

A.模块化 B.通用过程 C.自定义过程 D.Interface E.结果 F.返回值 G.过程 H.条件 I.结构化程序 J.实现部分 K.子程序 L.Uses M.参数 N.地址 P.Implementation

三、阅读程序题(24分)

1.执行s:=copy('delphitest',3,2) 语句后,s的结果是 (26) 。(2分) 2.设有一个自定义函数的声明过程如下:(2分)

Function myf(a,b,c:integer):integer; Var t:integer; Begin a:=3*a; t:=b div c; myf:=a+4*t; end;

则表达式myf(1,2,myf(1,2,3))值是 (27) 。 3.设有一个自定义过程声明如下:(3分,每空1分) Procedure pc(a:integer;var b,c:integer); Var d:integer; Begin a:=a+1;

第 2 页 共 10 页

b:=b+2;

d:=a+c; end;

执行下述程序段: x:=2; y:=3; z:=4;

pc(x,y,z);

则x的值是 (28) ,y的值是 (29) ,z的值是 (30) 。

4.本程序是小学生做加减法的算术练习程序。计算机连续随机给出两位数的加减法算术题,要求小学生回答,答对打“√”,答错打“×”,做过的题目放入列表框中备查,并随时给出答题的总数和正确率。设计界面与运行界面如图1。程序代码如下:

图1

procedure TForm1.Button1Click(Sender: TObject); begin

form1.Tag := 0; listbox1.Tag := 0; listbox1.Clear ; label1.Caption := format(#13+'重新开始!'+#13+#13+#13+'正确率为:'+#13+#13+ '%f%%', [0.00] ); edit2.SetFocus; end;

procedure TForm1.FormActivate(Sender: TObject); var a, b, p, t : integer; begin

Randomize;

a := Trunc(10 + Random(90)); b := Trunc(10 + Random(90)); p := Trunc(Random(2));

if p = 0 then

begin Edit1.text := format('%3d +%3d =', [a,b]); edit1.Tag := a + b; end else begin If a < b Then begin t := a; a := b; b := t; end;

第 3 页 共 10 页

Edit1.text := format('%3d -%3d =', [a,b]); edit1.Tag := a - b; end;

edit2.SetFocus; end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); var x : single; s : string; begin

if key = #13 then begin

Form1.Tag := Form1.Tag + 1;

if strtoint(edit2.Text) = edit1.Tag then begin

listbox1.Items.Insert(0,format(edit1.text + '%3s √ ', [edit2.text]));

listbox1.Tag := listbox1.Tag + 1;

end

else listbox1.Items.Insert(0,format(edit1.text + '%3s ×',[edit2.text]));

listbox1.ItemIndex :=0; Form1.FormActivate(sender);

x := listbox1.Tag * 100 / (form1.Tag);

s := #13 + '共做%d题' + #13 + #13 + #13 + '正确率为:' + #13 + #13 + '%f%%';

label1.Caption := format(s,[form1.tag,x]) end; end;

procedure TForm1.Button2Click(Sender: TObject); begin close; end;

说明各组件在程序中的作用(每空1分,共6分) 控件 作用 Edit1 (31) Edit2 (32) Listbox1 Button1 Button2 Label1

(33) (34) (35) (36) 第 4 页 共 10 页

说明下列变量的作用(每空1分,共3分) 名称 作用 A B P 名称 (37) (38) (39) 简述程序处理流程及实现的功能。 简要说明以上四段程序实现的功能。(共 8分) Button1Click(1分) (40) Edit2KeyPress(3分) (41) FormActivate(3分) (42) Button2Click(1分) (43) 四、程序填空题(40分,每空2分)

1.x,y都是0-255之间的整数,逻辑表达式(x<=10) or (x>=100) or (y<=5) or (y>=10)表示成完全等价的集合类型逻辑表达式为: (44) 。(2分)

2.请声明一个color枚举类型,包含5个枚举常量: red,yellow,blue,black,white,并为该类型声明3个变量c1,c2,c3,类型声明语句为 (45) (2分) 变量声明语句为: (46) 。(2分)

3.声明一个用户记录,其中包含用户名和密码两个字段,字段类型都为字符串型,字段长度为10个字符。 (47) 。(2分) 4.应用程序的用户界面如下图2所示:

图2

功能说明:该程序为一个教师信息录入界面。当用户在编辑框(Edit1)中输入姓名,利用单选按钮(RadioGroup1)指定性别,利用组合框(ComboBox1)选择或直接输入所在系,利用列表框(ListBox1)指定职称。当输入完上述信息后,

第 5 页 共 10 页

单击“确定”按钮,教师信息将显示在右边的Memo1编辑窗口中。请补充空缺部分,完成“确定”按钮的单击事件处理程序。

procedure TForm1.Button1Click(Sender: TObject); begin

memo1.Lines.Add(edit1. (48) ); //加入编辑框的内容 if radiogroup1. (49) = 0 then //判断选择了哪个按钮 memo1.Lines.Add('男') else

memo1.Lines.Add('女') ;

memo1.Lines.Add(combobox1.(50) ); //加入系的文本

memo1.Lines.Add( listbox1. (51) [listbox1.itemindex] ); //加入职称 end;

5.本程序的功能是实现对dep表(系)-student表(学生)的主从查询。用户可以依次查询系的记录,也可以通过指定系号,查找并定位到指定的记录。每当显示一个系的记录后,系统自动显示该系的学生记录。设计界面和运行界面如下图3:

图3

在Form1上建立的主要对象及连接如下:

Database1-Table1(与dep表相连)-DataSource1-DBEdit1~DBEdit3 Database1-Query1-DataSource2-DBGrid1(显示学生信息) Edit1、Button1(查找)、Button2(下一记录)、Button3(上一记录)等。 Query1的SQL语句是:

select * from student where dno = :dno

下面是Unit1单元的代码实现部分,请完成程序填空。

---------------------------------------------------------------------------------------------------------------------

implementation {$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject); //下一记录 begin

table1. (52) ; end;

procedure TForm1.Button3Click(Sender: TObject); //上一记录

第 6 页 共 10 页

begin

table1. (53) ; end;

procedure TForm1.Button1Click(Sender: TObject); //查找 begin

table1. (54) ('dno',edit1.Text,[]) ; end;

procedure TForm1.Table1AfterScroll(DataSet: TDataSet); begin

query1.Close ;

query1.ParamByName('dno').Value := (55) ; query1. (56) ; end; End.

6.以下函数实现十进制纯小数转换为2,3,8,16进制小数的功能,请填空完成程序。

function convert(n : real; rad : r) : string; Var

(57) //完成变量声明 begin

n := abs(n); Result := '0.';

while n > 10E-10 do begin

int := trunc(n * rad); if int < 10 then

digit := chr(ord( 58 ) + int) else

digit := chr(ord( 59 ) + int - 10); Result := Result + digit;

n := n * rad - int; end; end;

7.向一个已存在的文本文件后面追加一行文本“我成功的在这个文件后面加了一行文本”。文件名由OpenDialog1获取。 var

(60) //声明一个文本文件类型变量f begin

第 7 页 共 10 页

if OpenDialog1.(61) then

begin

AssignFile(f, OpenDialog1.(62));//建立内存变量与磁盘文件的联系 Append (f); //添加打开文件 (63)(f,’我成功的在这个文件后面加了一行文本。’);//将文本写入文件 closefile(f); //关闭文件 end; end;

五、简答题(11分)

1.Delphi 中“项目”的概念是什么?简述delphi可视化编程的一般步骤。(5分) 2.一个项目由一组文件组成。其中一些主要文件的后缀有:dpr,pas,dfm,请说出这些文件的中文名称及用途。(6分)

《可视化程序设计》参考答案

一、单项选择题

1-5 B A A D C 2-10 D C C B B 11-15 B D C D C

二、填空题

16-20 I A K F M(H) 21-25 E J(P) D P(J) L

三、阅读程序题 26.‘lp’ 27.3 28.2 29.5 30.4

31.显示随机产生的算术表达式(1分) 32.供用户输入计算结果(1分)

33.显示用户做过的算式及用户输入的计算结果(0.5分),并显示正确与否(0.5分) 34.单击清除listbox1中已显示的内容,初始化Label1的caption属性(0.5分),Edit2获得焦点(0.5分)

35.单击关闭程序窗体(1分)

36.显示用户做题的总数和正确率(1分)

37.将随机产生的随机数取整后赋值给整型变量A(0.5分),取值范围是10-99的整数,并参与运算(0.5分)

38.将随机产生的随机数取整后赋值给整型变量B(0.5分),取值范围是10-99的整数,并参与运算(0.5分)

第 8 页 共 10 页

39.随机产生0或1赋值给整型变量P(0.5分),取0时edit1中产生加法运算式,取1时产生减法(0.5分)

40.将列表框已生成的内容清空,初始化Lable的caption属性值(0.5分),edit2获得焦点,使用户可以开始重新做题并重新计算正确率(0.5分) 41.用户输入计算结果后按enter键确定(0.5分),做题总数增加1道(0.5分),题目、答案和正确与否显示到列表框中备查(0.5分),Lable1中显示做题总数和正确率(0.5分)。并在edit1中产生新的题目(0.5分),焦点继续停留在edit2中(0.5分)。(整题酌情给分) 42.随机产生算数表达式的两个整数(1分),随机决定加减法运算(1分),并在edit1中显示出来,使edit2获得焦点(1分)(整题酌情给分) 43.关闭整个程序窗体(1分)

四、程序填空题 44.(x in [0..10])or (x in [100..255]) or )y in [0..5]) or (y in [10..255])(整题酌情给分) 45.Type color=(red,yellow,blue,black,white); (整题酌情给分) 46.Var c1,c2,c3:color;

47.Type users=record(0.5分)

Username:string[10]; (0.5分) Password:string[10]; (0.5分) End; (0.5分) 48.Text

49.Itemindex 50.Text 51.Items 52.Next 53.Prior 54.Locate

55.Table1[‘dno’] 或DBEdit1.text 56.Open

57.Int:integer;digit:char; 58.‘0’ 59.‘A’

60.F:textfile; 61.Exeute 62.Filename

63.Writeln或write

五、简答题

1. 每个应用程序都被称为一个项目,或一个工程。它由一组相关文件构成。新创建的项目包含一个默认的主窗体form1和相应的单元unit1。根据项目需要可添加多个窗体。(2分) 一般步骤为:

1) 设计界面(0.5分)。利用控件在窗体上创建各种对象(0.5分) 2) 设置属性(0.5分)。设置窗体和控件等对象的属性 3) 编写代码(0.5分)。在delphi所提供的程序框架中加入完成功能的代码

第 9 页 共 10 页

4) 保存调试(0.5分)和运行程序(0.5分) (整题酌情给分)

2. dpr:工程文件(1分),是pascal语言源程序,是整个应用程序的主程序。该程序执行两项功能一是说明工程中的单元模块,二是启动应用程序。工程文件其中列出了所包含的全部单元文件名,如窗体、单元等,由Delphi自动生成,一般情况下不修改这个文件。(1分) Pas:单元文件(1分)。就是在代码编辑器中编写的过程代码文件。Delphi中的每个窗体都有一个对应的单元文件,除了窗体对应的单元文件之外,还可以在工程中建立与窗体无关的程序单元,在程序单元中编写工程中公用的函数、过程或定义数据。Delphi是按单元来组织程序的,所以在编译工程时,单元文件是不可缺少的。(1分)

Dfm:窗体文件(1分)。窗体文件用来保存窗体及其上的对象的特征,如大小、位置、颜色、显示方式等。该文件是一二进制代码文件,无需用户进行修改。(1分)

(整题酌情给分)

第 10 页 共 10 页

因篇幅问题不能全部显示,请点此查看更多更全内容