DELPHI期末複習題

Delphi 練習題

  1. 選擇題:
    1. 設a,b,c爲整形變量,且有a:=5,b:=2; 下面能使c的值爲1的正確語句是

    A)c:=(a-2)/b; B)c:=a MOD(b+2.0)

    C) c:=a DIV (b+1) D)c:=(a-2) DIV (b/1)

    1. 下列那個表達式無語法錯誤:

      A)70<30 B) 70>30 AND70>15 C)15<30<50 D)70 NOT 70>20

    2. 設r爲實變量,i爲整變量,下面CASE 語句合法的是

      A)case r of B) case I mod 3 of

      1.5,2.5:語句1; 0:語句1;

      3.5,4.5:語句2; 2:語句2;

      END; END;

C) case r of D) case I mod 3 of

1,3,.5:語句1; 0:語句1;

3,4,6:語句2; 1,2:語句2;

END;

  1. 下列說法中錯誤的是:

    A)IF語句可以嵌套 B)循環語句可以嵌套

    C)子程序可以嵌套 D)集合可以嵌套

(5) 不是object passcal 數據類型的是:

A)string B) int C) char D) real

(6)tbuttom 構件的visible 屬性類型是:

A)boolean B) integer

C) char D) real

  1. timage 構件的left ,top 屬性類型是:

    A)boolean B)integer

    C) tstring D) real

  2. ttimer 構件所在的選項卡是:

    A)win32 B)standard

    C) additional D)system

  3. dephi 單元文件的後綴名是:

    A).dpr B) .res

    C) .dcu D) .pas

  4. dephi 工程文件的後綴名是:

    A).dpr B).res

    C) .dcu D).pas

  5. 構件的enabled屬性用於

    A).顯示構件 B).使構件工作

    C) .顯示標題 D).清除標題

     

     

  6. 構件的visible屬性用於

    A).顯示構件 B).使構件工作

    C) .顯示標題 D).清除標題

  7. 窗體的oncreate事件在

A).在關閉窗體時發生 B). 在創建窗體時發生

C) . 在顯示窗體時發生 D). 在點擊窗體時發生

  1. Tedit 的onkeypress 事件在

A).在點擊edit時發生 B). 在edit的text變化時發生

C) . 在按下鍵盤的某個鍵時發生 D). 在點擊窗體時發生

(15) 窗體的onmouseup事件在

A).在點擊鼠標時發生 B). 在拖動鼠標時發生

C) . 在雙擊鼠標時發生 D). 在放開時鼠標時發生

(16)確定一個構件的位置由屬性()

A).left,top B). width,height

C) caption,name. D). enabled,visible

(17)狀態欄的面板的第一個面板的序號是:

A).1 B). 0

C) . -1 D). 2

(18)窗體的許多事件中,最早發生的是:

A).onshow B). onclick

C) . onkeypress D). oncreate

(19)timer中的interval代表時間1秒的是:

A).500 B). 200

C) . 1000 D). 2000

(20)edit1.text[i]表示

A).edit1中的i個字符 B). .edit1中的第i個字符

C) . .edit1中的左邊的i個字符 D). .edit1中的右邊的i個字符

 

 

 

二、填空題:

(1)、隱藏窗體的方法是:( hide )

(2)、關閉窗體的方法是:( close )

(3)、把組件Tmemo的內容保存到文本文件的方法是:lines.savetofile(filename);() )

(4)、要初始化窗體構件或某些變量時,需編寫窗體事件:( oncreate,onshow )

(5)、本窗體若干個共用的變量要在單元文件的( implementition 下 )部分聲明

(6)、其他窗體要用的變量要在單元文件的(interface )部分聲明

(7)、要在列表框中添加一項的方法是:( items.add(strings) )

(8)、要使timer1構件停止工作的程序語句是:(timer1.enable:=false )

(9)、要使edit1構件在窗體上顯示的程序語句是:(edit1.visible:=true )

(10)、把時間轉換爲字符串型的函數是:( timetostr() )

(11)、隨機函數是( random() )

(12)、四捨五入函數是( round() )

(13) 函數odd(3)的值是( true );

(14) const pai=3.14; 表示( )

(15)uses unit1;表示( )

(16)var a:array[-3..3,false..true] of integer;表示數組a有( 14 )整數。

(17)adoquery1.sql的屬性是(tstrings )類型。

(18)form1.caption 表示窗體的( 標題 )。

(19)form1.name表示窗體的( 名字 )。

(20)ado連接的數據集構件有兩個( adotable ,adoquery )

(21)把字體顏色設置爲紅色的語句是( font.color:=clred )

(22) 把字體大小設置爲18的語句是( font.size:=18 )

(23) 把字體樣式設置爲下劃線的語句是(Font.Style:= Font.Style+[fsunderline]; )

(24) 把字體設置爲隸書的語句是(font.name:='隸書' )

(25)打開文件對話框的語句是( opendialog1.execute )

(26)在窗體上畫圓的語句是( form1.canvas.ellipse(x1,x2,x1+y,x2+y) )

(27)把畫筆移到x0,y0的語句是( form1.canvas.moveto(x0,y0) )

(28)把畫刷的樣式設置爲交叉的語句是( form1.canvas.brush.style:=bscross )

(29)畫線的方法是( form1.canvas.lineto(x,y) )

(30)畫橢圓的方法是( canvas.ellipse(x1,x2,y1,y2) )

  1. 閱讀程序,說明其功能。
    1. Var f:textfile;

    Num:integer;

    Begin

    Assiginfile(f,opendialog1.filename)

    Reset(f)

    Num:=0;

    While not eof(f) do

    Begin

    Readln(f);

    Num:=num+1;

    End;

    Edit1.text:=inttostr(num);

    顯示文件的行數

2. procedure TForm1.Button1Click(Sender: TObject);

var s:string;i,j,n:integer;

begin

n:=0;//初值

s:=inputbox('input ch','ch=?','');

j:=length(s);

for i:=1 to j do

begin

if (s[i]>='0') and (s[i]<='7') then

n:=n*8+ord(s[i])-ord('0');

end;

edit1.Text:=inttostr(n);

end;

輸入 777 時 其輸出爲:511

輸入 505 時 其輸出爲:325

 

3. procedure TForm1.Button1Click(Sender: TObject);

Var n,x,I,s,power:integer;c:string;

begin

c:=inputbox('input ch','c=?',' ');

n:=strtoint(c);

s:=0;

for x:=1 to n do

begin

power:=1;

for I:=1 to x do

power:=power*x;

s:=s+power;

end;

Edit1.text:=inttostr(s);

 

end;

當c中的值爲 5 時 輸出是:1+22+33+…..

4. var x,y:integer;

begin

x:=80 y:=5;

repeat

if x-y>15 then

y:=y+3

else

x:=x div 2;

until x div y <=5;

showmessage(inttostr(x)+inttostr(y));

80 14

四、.設計題:

  1. 寫一個函數revers(x:integer):integer;,求一個整數的逆序數。如:4503的逆序數是:3054

function rever(x:integer):integer;

var s:integer;

begin

s:=0;

while x>0 do

begin

s:=s*10+x mod 10;

x:=x div 10;

end;

rever:=s;

end;

  1. 寫一個過程p1(p1,p2,p3:tpoint,var l,s:real);求三角形(由p1,p2,p3三點圍成)的周長l 及面積 s

    procedure p1(p1,p2,p3:tpoint,var l,s:real);

    var a,b,c,pp:real;

    function d(p1,p2:tpoint):real;

    begin

    d:=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));

    end;

    begin

    a:=d(p1,p2);b:=d(p2,p3);c:=d(p1,p3);

    pp:=0.5*(a+b+c);

    l:=a+b+c;

    s:=sqrt(pp*(pp-a)*(pp-b)*(pp-c));

    end;

  2. 寫一個過程add_string(s:string;c:Tcombobox);把字符串s加入到下拉列表框c中。

Procedure add_string(s:string;c:Tcombobox);

Begin

c.items.add(s);

end;

*4 寫一個過程draw(n:integer)在窗體上輸出:

 

 

 

 

 

 

1

  1. 2 1

1 2 3 2 1

……………………………………………..

1 2 3 …………………..n …………………3 2 1

 

 

procedure draw(n:integer);

var x,y,i,j:integer;

begin

for i:=1 to n do

begin

j:=i;

y:=i*20;

while j>0 do

begin

x:=form1.Width div 2;

form1.Canvas.TextOut(x+(i-j)*20,y,inttostr(j));

form1.Canvas.TextOut(x-(i-j)*20,y,inttostr(j));

j:=j-1;

end;

end;

end;

 

 

 

 

 

 

 

4.如下界面: richedit1

在edit1中輸入文件名,點擊button1 使文件中的內容顯示在richedit1

 

procedure TForm1.Button1Click(Sender: TObject);

var f:textfile; s:string;

begin

assignfile(f,edit1.Text);

reset(f);

while not eof(f) do

begin

readln(f,s);

RichEdit1.lines.add(s);

end;

closefile(f);

end;

查詢的時候必須加上路徑。

 

其實TMD這些都廢話,直接一句richedit1.lines.loadfromfile(edit1.text);

 

5. 有僱員信息表(guyuan.mdb)如下:

 

僱員號

僱員名

部門號

工資

001 

劉玟民

02 

2000 

010 

馬鍵輝

01 

1200 

056 

羅小海

02 

1300 

101 

牛進林

04 

2100 

界面如下:

 

現查詢部門號爲'02'的所有記錄,請寫出相應的SQL語句,並使之顯示在

 

procedure TForm2.Button1Click(Sender: TObject);

var I:integer;

begin

adouery1.close;

adouery1.sql.add('select * from guyuan where部門號=:部門號);

adoquery1.parameters.paramerterbyname('部門號').value:='02'

adouqery1.open;

stinrggrid1.cells[0.0]:='僱員號';

stinrggrid1.cells[1.0]:='僱員名';

stinrggrid1.cells[2.0]:='部門號';

stinrggrid1.cells[3.0]:='工資';

I:=1;

while not adoquery1.eof do

begin

stinggrid1.cells[0.i]:=adoquery1.fieldvalue['僱員號'];

stinggrid1.cells[1.i]:=adoquery1.fieldvalue['僱員名';];

stinggrid1.cells[1.i]:=adoquery1.fieldvalue['部門號'];

stinggrid1.cells[1.i]:=adoquery1.fieldvalue['工資'];

I:=I+1;

Adoquery1.next;

End;

 

 

end;

 

end.

6.寫兩個事件過程,(1.)點擊"輸入數據"在edit1中輸入10個隨機數.

(2)點擊"分離數據"把奇數顯示在edit2中.偶數顯示在edit3中.

var a:array[1..10] of integer;

procedure TForm1.Button1Click(Sender: TObject);

var i:integer;s:string;

begin

 

edit1.Clear;

for i:=1 to 10 do

begin

s:=inputbox('輸入','請輸入一個數','');

edit1.Text:=edit1.Text+s+' ';

a[i]:=strtoint(s);

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var i:integer;

begin

edit2.Clear;

edit3.Clear;

for i:=1 to 10 do

begin

if odd(a[i]) then edit2.text:=edit2.Text+inttostr(a[i])+' '

else edit3.Text:=edit3.text+inttostr(a[i])+' ';

end;

end;

*7.寫兩個事件過程,(1.)點擊"k個隨機數"窗體上顯示k(<10)個隨機數(<100).

(2)點擊"k個button"產生k個button,並把k個數顯示在k個button,中.

 

var n:array[1..10] of integer;

k:integer;

procedure TForm1.Button1Click(Sender: TObject);

var i:integer;

begin

randomize;

k:=random(10);

for i:=1 to k do

begin

n[i]:=random(100);

form1.Canvas.TextOut(100+(i-1)*20,50,inttostr(n[i]));

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var Kbutton:array[1..10] of Tbutton;

i:integer;

begin

for i:=1 to k do

begin

Kbutton[i]:=Tbutton.Create(self);

Kbutton[i].Parent:=self;

Kbutton[i].Top:=100;

Kbutton[i].Left:=100+(i-1)*40;

Kbutton[i].Height:=40;

Kbutton[i].Width:=40;

Kbutton[i].Visible:=true;

Kbutton[i].Caption:=inttostr(n[i]);

end;

end;8.設有student表(學號,姓名,性別,出生年月,成績,照片);

Xiuanxiu表(學號,課程號,成績);用學號連接,datasource1,datasource2,query1,query2的相關屬性均已設置好,請寫一個ondatasourcechange的事件代碼,令主表(student)每移動一個記錄,從表(xuanxiu)的內容跟着變化.如圖所示:

procedure tform1.ondatasource(tobject)

var s:string;

begin

adoquery1.open;

s:=adoquery1.fieldvalue['學號'];

adoquery2.close;

adoquery2.sql.add(select * from xuanxiu where 學號=學號);

adoquery2.parameters.parambyname('學號').value:=s;

adoquery2.open;

end;

 

9. 設有student表(學號,姓名,性別,出生年月,成績,照片);在combobox1中用手工輸入學號,姓名,性別,出生年月,成績,在edit1中輸入要查詢的相應數據, 請寫一個button1click的事件代碼以及combobox1click的事件代碼,實現所要的查詢.假設datasource1,query1,dbgrid1屬性已連接好。

var s:string;

procedure tform1.comboboxclick(tobject)

begin

s:=combobox1.text;

end;

procedure tform1.buton1click(tobject);

begin

query1.close;

query1.sql.add('select * from student while'+s+'=:參數');

query1.parameters.parambyname('參數').value:=edit1.text;

query1.open;

end;

10.如圖所示,寫兩個事件代碼,單擊"添加"把edit1中的內容加到listbox1中,並把他的字符個數添加到listbox2中

procedure TForm1.Button1Click(Sender: TObject);

var n:integer;

begin

listbox1.items.add(edit1.text);

n:=length(edit1.text);

listbox2.items.add(inttostr(n));

end;

 

 

procedure TForm1.Button2Click(Sender: TObject);

var I:integer;

begin

for I:=0 to listbox1.items.count-1 do

if listbox1.selected[i] then begin

listbox1.items.delete(i);

listbox2.items.delete(i);

break;

end;

 

end;

11.有student表(學號,姓名,性別,成績)現要建立直方圖,分析每位學生的成績分佈

請寫button1click的事件代碼

Implementition

 

Type re=record

Name:string;

Scor: real;

End;

Var a:array[1..10] of re; i:integer

Procedure tfom1-button1click(sender:tobject);

query1.Close;

query1.SQL.Clear;

query1.SQL.Add('select * from student');

query1.Open;

i:=1;

while not query1.Eof do

begin

a[i].name :=query1.FieldValues ['姓名'];

a[i].scor :=query1.FieldValues ['成績'];

i:=i+1;

query1.Next ;

end;

With Series1 do

Begin

Add( a[1].scor , a[1].name , clRed ) ;

Add( a[2].scor , a[2].name , clBlue ) ;

Add( a[3].scor , a[3].name , clGreen ) ;

end;

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