Delphi程序員筆試題目

一. 選擇題(共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的差別了:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章