北京航空航天大学
2009-2010 学年 第二学期期末
《
Delphi 程序
设计》
试 题(附参考答案)
班 级______________学 号 _________
姓 名______________成 绩 _________
2010 年 4 月 29 日
本卷共有四个题( ,答题要求如下 本卷共有四个题(共 100 分) 答题要求如下: ,
先画出题目组件的分布示意草图,再写出相应的
程序。 先画出题目组件的分布示意草图,再写出相应的程序。 (20%)输入两个实型数,计算并输出它们的和、差、积及商(除数为零时 积及商( 一、 ( )输入两个实型数,计算并输出它们的和、 显示不能计算) 显示不能计算) 。 要求: (1)输入数据时,按键只许数字、小数点和退格通过, 要求: )输入数据时,按键只许数字、小数点和退格通过,其它按键一律 ( 屏蔽。 屏蔽。 (2)输出部分精度要求小数点后 5 位。 )
EDIT1
EDIT2
MEMO1
Mergetc.c
Mergetc.c
BUTTON1
procedure TForm1.Button1Click(Sender: TObject); Var a,b,ad,su,pr,di:real;
BUTTON2
Procedure fourp(x,y:real;Var add,sub,pro,divt:real); Begin add:=x+y; sub:=x-y; pro:=x*y;
IF y=0 THEN edit3.text:=’被除数为 0’ ELSE divt:=x/y End; Begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); fourp(a,b,ad,su,pr,di); Memo1.Lines.Add(Format('%.5f%.5f%.5f.5f',[ad,su,pr,di])) End;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin IF NOT((key=#8)OR(key='.')OR(key>=#48)AND(key<=#57)) THEN key:=#0 end;
(20%)用牛顿迭代法求 f(x)=3x 3 -4x 2 +5x-13=0 的一个根 二、 ( )
迭代公式: x n +1 =
xn ?
f ( x n) f ' ( x n)
当 d n =| f(x n )/f’(x n ) |< ε =10 ?6 x n +1 便是根( n=0,1,2,3,…) procedure TForm1.Button1Click(Sender: TObject); CONST EPS=1E-6;
VAR x,d:real; begin x:=strtofloat(Edit1.Text); REPEAT d:=(3*exp(3*ln(x))-4*x*x+5*x-13)/(9*x*x-8*x+5); x:=x-d UNTIL abs(d)
Edit2.Text:=format('%.6f',[x]) end;
(30%)一百匹马将二百块砖驮上山,其中大马、中马和小马分别每匹驮 3 三、 ( )一百匹马将二百块砖驮上山,其中大马、 计算并输出各类马匹数量的非负整数解。 块、2 块和 0.5 块,计算并输出各类马匹数量的非负整数解。
procedure TForm1.Button1Click(Sender: TObject); VAR Horse1,horse2,house3:integer; begin Memo1.Clear; FOR horse1:=0 TO 100 DO FOR horse2:=0 TO 100 DO FOR hoese3:=0 TO 100 DO BEGIN IF (horse1+hoese2+hoese3=100)AND
(3*horse1+2*hoese2+hoese3/2=200) THEN Memo1.Lines.Add(Format('%10d%10d%10d', [hoese1,oese2,hoese3])) END end;
(30%)按下列形式输出九九表 四、 ( )
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ……………… 1*9=9 2*9=18 3*9=27 …… 9*9=81 procedure TForm1.Button3Click(Sender: TObject); VAR i,j:1..9; s:string; begin memo1.Clear; FOR i:=1 TO 9 DO BEGIN
s:=''; FOR j:=1 TO i DO s:=s+format('%d*%d=%-4d',[j,i,j*i]); Memo1.Lines.Add(s); END end;