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;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值