首页 > 教育知识 > 人文百科 > 程序完善

程序完善

时间:2017-11-14   来源:人文百科   点击:

【www.gbppp.com--人文百科】

程序完善 第一篇_完善程序题(20道)

完善程序(共20道题)

1.实现功能:在Text1、Text2、Text3中输入三个整数后,单击“输出最大值”按钮后,在Label3中显示这3个数中的最大值。

Private Sub Command1_Click()

Dim a, b, c, max As Integer

a = Val(Text1.Text)

b = Val(Text2.Text)

c = Val(Text3.Text)

If a > b Then max = a Else ①

If c > max Then ②

Label3.Caption = CStr(max)

End Sub

答案:

① max=b

② max=c

2.计算s=5+10+15+20的和

s=①

For n=5 to 20 step ②

s=s+n

next n

print s

答案:

① 0

② 5

3.计算1-100之间偶数的积

s=①

For n=100 to 1 step ②

s=s*n

next n

print s

答案:

① 1

② -2

4. 某超市为了对苹果进行促销,规定购买2公斤以上可以在原价每公斤6.80元的基础上打8折。实现功能:

输入购买的苹果公斤数,输出应付款。

Private Sub Command1_Click()

Dim x As Single

Dim cost As Single

x = Val(InputBox("请输入苹果公斤数:"))

If x ① Then

cost = x*6.8

Else

cost = x * 6.8 * 0.8

Print cost

End Sub

答案:

① <= 2

② end if

5.用DO WHILE 循环 求s=1+2+3+„„+100的和

I=0

S=0

Do While I<100

I=①

S=S+1

Print s

答案:

①I+1

6. 用DO WHILE 循环 求s=5*4*3*2*1的积

I=5

S=①

Do While I>=1

S=S*I

I=②

loop

Print s

答案:

①1

②I-1

7. 设计一个程序,单击按钮Command1时,让标签label1的字体为幼圆,字号36号字,label1上显示“祝同学们考试顺利”。

Private Sub Command1_Click()

Label1. ①=“幼圆”

Label1.fontsize=36

Label1. ②=“祝同学们考试顺利”

End Sub

①FontName

②caption

8.设计程序,窗体包含3个文本框Text1,Text2,Text3,当录入Text1内容时,Text2等于Text1内容的大写,Text3等于Text1内容的小写。

Text1的change事件代码:

Private Sub Text1_change ()

Text2.text= ①(Text1.text)

Text3.text =Ucase(②)

End Sub

答案:

① Lcase

② Text1.text

9.设计程序,窗体包含1个文本框Text1,当录入Text1内数字大于100,或小于0时,输出Text1内数字

Text1的change事件代码:

Private Sub Text1_change ()

x= ①(Text1.text)

程序完善 第二篇_完善程序专项练习

完善程序练习

第1题(14分)以下程序是将一组整数按从小到大的顺序排列。排序的方法是将长度为n的数a分为两个长度分别为(n div 2)与(n-n div 2)的子数组a1,a2。然后递归调用排序过程,将a1,a2分别排序,最后将a1,a2归并成数组a。例如a=(3,1,2,4),那么a1=(3,1),a2=(2,4)。调用排序过程将a1,a2排序,得到a1=(1,3),a2=(2,4),然后进行合并排序。

从键盘输入数的长度n以及n个整数,存在数组a中,调用子过程sort进行排序,最后输出排序结果。

program wsh;

const maxn=100;.

type arr:array[1..maxn] of integer;

var

a:array[1..maxn] of integer;

n,i:integer;

procedure sort(n:integer; var a:arr);

var

i, p1, p2, n1, n2: integer;

a1,a2 :arr;

begin

if n = 1 then exit;

fillchar(a1,sizeof(a1) ,0);

fillchar(a2,sizeof(a2) ,0);

n1:=0; n2:=0;

n1:=n div 2; n2:=(____(1)____);

for i:= 1 to n1 do a1[i]:=a[i];

for i:= 1 to n2 do a2[i]:=____(2)____;

____(3)____;

sort(n2, a2);

p1:=1; p2:=1;

n:=0;

while (p1 <= n1) and (____(4)____) do

begin

n:=n+1;

if ____(5)____

then begin a[n]:=a1[p1] ;inc(p1); end

else begin ____(6)____; inc(p2) ;end;

end;

if p1 <= n1

then for i:= ____(7)____ to n1 do begin n:=n+1;a[n]:=a1[i] end

else for i:=p2 to n2 do begin n:=n+1; a[n]:=a2[i]; end;

end;

begin

write('n = ');

readln (n);

for i:= 1 to n do read(a[i]);

readln;

sort(n,a);

for i:=1 to n do write(a[i],'');

writeln;

end.

第2题(8分)有n(1≤n≤100)个同学种m(1≤n≤m≤100)种小树苗,例如:4个同学(1、2、3、4)每小时种4种树苗(A、B、C、D)的数量估算如下表所示,编程输出每人种1种苗所用的总时间最少的安排方案和所花费的时间。

学 生 A

1

2

3

4

const

maxn=100; maxm = 100;

var

a: array[1..maxn, 1..maxm] of integer;

m, n: integer;

i, j, t: integer;

procedure work(k,t1: integer);

var i: integer;

begin

if ____(1)____ then

begin

if t1 < t then t1:=t;

exit;

end;

for i:= ___(2)___ to ___(3)___ do

B 2 3 2 2 C 4 5 4 3 D 5 3 2 3 5 4 5 3 program wsh;

work(k+1,___(4)___);

end;

begin

readln(n,m);

for i:=1 to n do

begin

for j:=1 to m do read (a[i,j]);

readln

end;

t:= maxint;

work(1,0);

writeln(t)

end.

第3题(10分)程序的任务是用0„9中的数字填入如下乘法运算的*处,数字可重复使用,且所用的数字至少有一个是素数,要求输出满足下列算式的方案数。

* * *

x * *

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

* * *

* * *

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

* * *

program wsh;

const p:set of 0...9 = [2,3,5,7];

var

s:set of 0..9;

n: integer;

ans: longint;

f: text;

procedure init;

var

i: integer;

t:byte;

begin

readln(n);

s:=[];

begin

read(t);

s:=s+[t];

end;

close(f);

end;

function ok(x,l:integer):boolean; {此函数判断x是否符合条件}

var t: byte;

begin

ok:=false;

if ___(1)___< > l then exit;

while x< >0 do

begin

t:=x mod 10;

if not ( t in s) then exit;

x:=x div 10;

end;

ok:=true;

end;

function inset(x:integer):boolean; {此函数判断x中是否包含素数字}

var t: byte;

begin

inset:= false;

while ___(2)___ do

begin

t:=x mod 10;

if t in p then

begin

inset:= true;

exit;

end;

___(3)___;

end;

end;

procedure work;

var i,i1,i2,i3,j1,j2:integer;

begin

ans:=0;

if i1 in s then

for i2:=1 to 9 do

if i2 in s then

for i3:=1 to 9 do

if i3 in s then

begin

___(4)___;

for j1:=1 to 9 do

if (j1 in s) and ok(j1*i,3) then

for j2:=1 to 9 do

if (j2 in s) and ok(j2*i,3) and ___(5)___ then

begin

if (i1 in p) or (i2 in p) or (i3 in p)

or (j1 in p) or (j2 in p) or inset(j1*i) or inset(j2*i) then inc(ans);

end;

end;

writeln(ans);

end;

begin【程序完善】

init;

work;

end.

第4题(15分)下列程序是对冒泡排序的一种改进,数组elem中有n个元素elem[1]、elem[2]„、elem[n]。要排序的关键字是key。先从一端开始扫描,进行比较、交换,然后改变下一趟的扫描方向进行同样的处理。请完善下面的过程。

program wsh;

type

Td = record

key: integer;

inf: real;

end;

var

elem:array[1..1000] of Td;

n, i: integer;

程序完善 第三篇_pascal 习题 完善程序

第1题(14分)以下程序是将一组整数按从小到大的顺序排列。排序的方法是将长度为n的数a分为两个长度分别为(n div 2)与(n-n div 2)的子数组a1,a2。然后递归调用排序过程,将a1,a2分别排序,最后将a1,a2归并成数组a。例如a=(3,1,2,4),那么a1=(3,1),a2=(2,4)。调用排序过程将a1,a2排序,得到a1=(1,3),a2=(2,4),然后进行合并排序。

从键盘输入数的长度n以及n个整数,存在数组a中,调用子过程sort进行排序,最后输出排序结果。 program wsh;

const maxn=100;.

type arr:array[1..maxn] of integer;

var

a:array[1..maxn] of integer;

n,i:integer;

procedure sort(n:integer; var a:arr);

var

i, p1, p2, n1, n2: integer;

a1,a2 :arr;

begin

if n = 1 then exit;

fillchar(a1,sizeof(a1) ,0);

fillchar(a2,sizeof(a2) ,0);

n1:=0; n2:=0;

n1:=n div 2; n2:=(____(1)____);

for i:= 1 to n1 do a1[i]:=a[i];

for i:= 1 to n2 do a2[i]:=____(2)____;

____(3)____;

sort(n2, a2);

p1:=1; p2:=1;

n:=0;

while (p1 <= n1) and (____(4)____) do

begin

n:=n+1;

if ____(5)____

then begin a[n]:=a1[p1] ;inc(p1); end

else begin ____(6)____; inc(p2) ;end;

end;

if p1 <= n1

then for i:= ____(7)____ to n1 do begin n:=n+1;a[n]:=a1[i] end

else for i:=p2 to n2 do begin n:=n+1; a[n]:=a2[i]; end;

end;

begin

write('n = ');

readln (n);

for i:= 1 to n do read(a[i]);

readln;

sort(n,a);

for i:=1 to n do write(a[i],'');

writeln;

end.

答案:

n-n1

a[n1+i]

sort(n1,a1)

(p2 < =n2)

a1[p1] < a2[p2]

a[n]:=a2[p2]

p1

第2题(8分)有n(1≤n≤100)个同学种m(1≤n≤m≤100)种小树苗,例如:4个同学(1、2、3、4)每小时种4种树苗(A、B、C、D)的数量估算如下表所示,编程输出每人种1种苗所用的总时间最少的安

排方案和所花费的时间。

学 生 A

1

2

3

4 5 4 5 3 B 2 3 2 2 C 4 5 4 3 D 5 3 2 3

program wsh;

const

maxn=100; maxm = 100;

var

a: array[1..maxn, 1..maxm] of integer;

m, n: integer;

i, j, t: integer;

procedure work(k,t1: integer);

var i: integer;

begin

if ____(1)____ then

begin

if t1 < t then t1:=t;

exit;

end;

for i:= ___(2)___ to ___(3)___ do

work(k+1,___(4)___);

end;

begin

readln(n,m);

for i:=1 to n do

begin

for j:=1 to m do read (a[i,j]);

readln

t:= maxint;

work(1,0);

writeln(t)

end.

答案:

k>n

1

m

t1+t[k,i]

第3题(10分)程序的任务是用0„9中的数字填入如下乘法运算的*处,数字可重复使用,且所用的数字至少有一个是素数,要求输出满足下列算式的方案数。

* * *

x * *

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

* * *

* * *

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

* * *

program wsh;

const p:set of 0...9 = [2,3,5,7];

var

s:set of 0..9;

n: integer;

ans: longint;

f: text;

procedure init;

i: integer;

t:byte;

begin

readln(n);

s:=[];

for i:=1 to n do

begin

read(t);

s:=s+[t];

end;

close(f);

end;

function ok(x,l:integer):boolean; {此函数判断x是否符合条件} var t: byte;

begin

ok:=false;

if ___(1)___< > l then exit;

while x< >0 do【程序完善】

begin

t:=x mod 10;

【程序完善】

if not ( t in s) then exit;

x:=x div 10;

end;

ok:=true;

end;

function inset(x:integer):boolean; {此函数判断x中是否包含素数字} var t: byte;

begin

inset:= false;

程序完善 第四篇_完善程序训练

专题训练

1、【问题描述】

集合A中的元素有以下特征:

(1)数1是A中的元素;

(2)如果X是A中的元素,则2X+1,3X+1也是A中的元素;

(3)除了条件(1),(2)以外的所有元素均不是A中的元素;

给定数N,请求出集合中的第N个元素(元素按由小到大排列)。

例如 N=5, A(5)=9

5个元素分别是1、3、4、7、9

var n,Long,x:longint;

function init(x:longint):boolean;

begin

if x=1 then init:=true

else if( (x-1)mod 2=0)and( init((x-1)div 2))

or ________________________then init:=true else_________________ ; end;

begin

readln(n);

x:=0;

Long:=0;

while Long<n do

begin

x:=__________ ;

if init(x) then _____________________ ;

end;

writeln(_________________ );

end.

2、求N个数中的第K小的数。程序利用快排(递归、分治算法),当找到第N个小的数时候就停止。

样例:输入:5 {N}

5 6 4 1 8 {N个数}

2 {第2小的数}

输出:4 {第2小的数是4}

var i,j,k,n:integer;

a:array[1..100] of integer;

procedure search(b,e:integer);

var i,m,t:integer;

begin

if b=e then ____;

i:=b; j:=e; m:=a[k];

repeat

while _______do inc(i);

while ______ do dec(j);

if _____ then begin t:=a[i];a[i]:=a[j];a[j]:=t end;

until i>=j;

if i=k then exit;

if i>k then ________________else ______________________;

end;

begin

readln(n);

for i:=1 to n do read(a[i]);

readln(k);

search(1,n);

writeln(a[k]);

end.

3、根据二叉树的前序遍历和中序遍历,求出树的后序遍历。

样例输入:abdec (前序) 输出:debca(后序)

dbeac (中序)

var s1, s2 : string;

procedure try(L1, r1, L2, r2 : integer);

var m : integer;

begin

m := pos(s1[L1], s2);

if m >L2 then try(__________________);

if m < r2 then try(________________________);

write(s1[L1])

end;

begin

readln(s1); readln(s2);

try(1, length(s1), 1, length(s2));

end.

4、(选排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数中取k(1<=k<=n)个数的全部可能的排列(不一定按升序输出)。例如,当n=3,k=2时,应该输出(每行输出5个排列):

12 13 21 23 32

31

程序:

Var i,n,k:integer;

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

count:longint;

Procedure perm2(j:integer);

var i,p,t:integer;

begin

if ① then

begin

for i:=k to n do

begin

inc(count);

t:=a[k]; a[k]:=a[i]; a[i]:=t;

for ② do write(a[p]:1);

write(' ');

t:=a[k];a[k]:=a[i];a[i]:=t;

if (count mod 5=0) then writeln;

end;

exit;

end;

for i:=j to n do

begin

t:=a[j];a[j]:=a[i];a[i]:=t;

③ ;

t:=a[j]; ④ ;

end

end;

begin

writeln('Entry n,k (k<=n):'); read(n,k);

count:=0;

for i:=1 to n do a[i]:=i;

⑤ ;

end.

5、(大整数开方)输入一个正整数n(1≤n<10100),试用二分法计算它的平方根的整数部分。NOIP2011题

Const size = 200;

type

hugeint = record

len : integer;

num : array[1..size] of integer;

end; //len表示大整数的位数;num[1]表示个位、num[2]表示十位,以此类推

var s : string;

i : integer;

target, left, middle, right : hugeint;

function times(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的乘积

var i, j : integer;

ans : hugeint;

begin

fillchar(ans, sizeof(ans), 0);

for i := 1 to a.len do

for j := 1 to b.len do

① := ans.num[i + j - 1] + a.num[i] * b.num[j]; for i := 1 to a.len + b.len do

begin

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] div 10;

② ;

if ans.num[a.len + b.len] > 0 then

ans.len := a.len + b.len

else ans.len := a.len + b.len - 1;

【程序完善】

end;

times := ans;

end;

function add(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的和 var i : integer;

ans : hugeint;

begin

fillchar(ans.num, sizeof(ans.num), 0);

if a.len > b.len then

ans.len := a.len

else ans.len := b.len;

for i := 1 to ans.len do

begin

ans.num[i] := ③ ;【程序完善】

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] div 10;

ans.num[i] := ans.num[i] mod 10;

end;

if ans.num[ans.len + 1] > 0 then

inc(ans.len);

add := ans;

end;

function average(a, b : hugeint) : hugeint; // 计算大整数 a 和 b 的平

均数的整数部分

var i : integer;

ans : hugeint;

begin

ans := add(a, b);

for i := ans.len downto 2 do

begin

ans.num[i - 1] := ans.num[i - 1] + ( ④ ) * 10;

ans.num[i] := ans.num[i] div 2;

end;

ans.num[1] := ans.num[1] div 2;

if ans.num[ans.len] = 0 then

dec(ans.len);

average := ans;

end;

function plustwo(a : hugeint) : hugeint; // 计算大整数 a 加 2 后的结果

var i : integer;

ans : hugeint;

begin

ans := a;

ans.num[1] := ans.num[1] + 2;

i := 1;

while (i <= ans.len) and (ans.num[i] >= 10) do

begin

ans.num[i + 1] := ans.num[i + 1] + ans.num[i] div 10;

ans.num[i] := ans.num[i] mod 10;

inc(i);

end;

if ans.num[ans.len + 1] > 0 then

⑤ ;

plustwo := ans;

end;

function over(a, b : hugeint) : boolean; // 若大整数 a > b 则返回 1, 否则返回 0

var i : integer;

begin

if ( ⑥ ) then

begin

over := false;

exit;

end;

if a.len > b.len then

begin

over := true;

exit;

end;

for i := a.len downto 1 do

begin

if a.num[i] < b.num[i] then

begin

over := false;

exit;

end;

if a.num[i] > b.num[i] then

本文来源:http://www.gbppp.com/jy/392653/

推荐访问:仲裁程序完善 完善征地程序

热门文章