网站大量收购独家精品文档,联系QQ:2885784924

pascal 习流题 完善程序.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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 B C D 1 5 2 4 5 2 4 3 5 3 3 5 2 4 2 4 3 2 3 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]);

文档评论(0)

zzabc003 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档