pascal竞赛辅导_第1页
pascal竞赛辅导_第2页
pascal竞赛辅导_第3页
pascal竞赛辅导_第4页
pascal竞赛辅导_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、请你读懂下面的这个程序,说出程序的功能Program bijiaosangeshudaxiao (input, output)Vara, b, c, t: integer;beginwrite(input a, b, c:);readln(a, b, c);if ab thenbegin t:=a; a:=b; b:=t; end;if ac then begin t:=a; a:=c; c:=t; end;if bc then begin t:=b; b:=c; c:=t; end;writeln (The output is:, a, b, c)end.输入数据10,3,21,请写出输出的

2、结果。作业:给出三角形的三个边长a, b, c,求出三角形的面积。提示:三角形的三边必须满足条件:a+bc and b+ca and c+ab给出三边,则三角形的面积可按下面的公式计算:s=1/2(a+b+c)area(面积)sqrt (s (s-a)(s-b)(s-c)循环结构(for语句、whiledo语句)for语句的执行过程是:1、先将初值赋给循环变量2、判断循环变量的值是否已超过终值,如已超过,则跳到步骤63、如果未超过终值,则执行“do”后面的那个语句4、循环变量递增(或者递减)15、返回执行步骤26、循环结束,执行for循环下面的语句。基本语句举例:for i:=1 to n d

3、o /i作为循环控制变量,当条件不满足i时即跳出循环begin readln(a); writeln(a);end;求n!。提示:n!=n*(n-1)*(n-2)*(n-3)*1program njiecheng ( input, output);var x: real; n, i : integer;begin write ( input n , calculat n!:); readln ( n ); if ( n0 ) then writeln (input n0, error!) else beginx:=1; /定义x的初值是1for i:=n downto 1 do /n的初值由程

4、序开始时读入 x:=x*i;writeln(n!= , x); endend. 输入两个数x1、x2,判断它们是否是互质数分析:(1)如果x1/x2为整数,则非互质数;(假设大数x1,小数x2) (2)如果x2和x1能同时被2x2/2间任一整数整除,则x1和x2非互质。如36和27,能同时被3整除,故非互质(以2到27/2,作为除数,如x1和x2能被其中任一整除,则36,27非互质)program huzhishu (input, output);var x1, x2, t, n, i : integer; yes: Boolean;begin write ( input x1, x2:);

5、readln ( x1, x2 ); if ( x1x2 ) then begin t:=x1; x1:=x2; x2:=t end; yes:=true; if ( x1 mod x2 ) = 0 then yes:=false else begin n:=x2 div 2; for i:=2 to n do if (x1 mod i)=0) and (x2 mod i)=0) then yes:=false end; if yes then writeln (They are mutual prime numbers.)else writeln (They are not mutual n

6、umbers.)end.Input x1, x2: 23 189They are mutual prime numbers.Input x1, x2: 24 189They are not mutual prime numbers.循环语句的嵌套:某人想将手中一张面值100元的人民币换成5元、1元和0.5元面值的票子,但要求100元换以上的零钱共100张,且要求每种不少于1张。问有几种组合。设5元票i张,1元票j张,0.5元票k张program onehundred (output)p vari, j, k : integer;sum, rmb sum, real; beginwriteln

7、( i j k);for i := 1 to 100 do for j :=1 to 100 do for k := 1 to 100 do begin sum := i+j+k; rmb sum := 5*i+1*j+0.5*k; if (sum=100) and (rmb sum=100) then writeln ( i, j, k) end end.这就是计算机编程中经常用到的穷举法。用while语句写程序求100到200间的素数。Program sushu ( output);Var i, k, kend, n : integer; yes : Boolean;begin write

8、ln ( The primary between 100 to 200:); n:=0 for i:=100 to 200 doif odd (i) then /测试奇数函数,测试i值是否为奇数,如果是则odd(i)=ture,反之false begin yes:= ture; kend:= trunc(sqrt(i); /取整数函数,取根号i后的整数 k:=2; while (k4,进行对调5 4 7 3 8 6 7和3比较,73,进行对调5 4 3 7 8 6 7和8比较,不进行对调5 4 3 7 8 6 8和6比较,86,进行对调5 4 3 7 6 8按上述算法进行一趟两两比较并根据条件

9、进行交换位置后,最大的数必然落在最后的位置上,对于6个数,一趟需要进行5次比较;对于10个数来说,一趟应该进行9次比较;由此可以推断出,对于N个数,总共需要进行N1组相同的比较,每一趟应该进行N(第几组比较数)次比较操作。具体程序如下:program paixu ( input, output);const n=10;var a: array1.n of integer; i, j: integer;begin writeln (input 10 integer num:); for i:=1 to n do read ai; readln; for j:=1 to n-1 do /对n个数总

10、共需要进行n1组比较for i:=1 to n-j do /对每一组比较需要进行的比较次数是nj次if aiai-1 then begin t:=ai; ai:=ai-1; ai-1:=t end;writeln ( output new seq.:);for i:=1 to n do beginwrite ( ai:4);if i mod 5=0 then writeln end;writelnend.运行结果如下: input 10 integer num:7 6 23 21 19 18 10 16 5 13 the new seq.:5 6 7 10 1316 18 19 21 232、

11、选择排序法:此算法指导思想是不急于调换位置,先从a1开始逐个检查,看哪个数最小就记下该数所在的位置p,等到扫描一趟完毕,再把ap和a1对调,这时a1到a10中的最小数就换到了最前面的位置上,算法步骤如下:(1)先假设a1中的数最小,记下此最小数的位置p=1;(2)依次把ap和ai(i从2变化到10)进行比较,每次比较时,若ai中的数比ap中的数小,则把i的值赋给p,使p总是指向当前扫视过的最小数的位置;因此ap总是代表当前所扫视过的最小数。在依次一一比较完后,p就指向10个数中最小数所在的位置,ap就是10个数中最小的那个数;(3)把ap和a1中的数对调,最小数就放在a1中了。循环的设计:重复

12、此算法,只是每重复一次,进行比较的数列范围向后移动一个位置。即第二遍从第2到第n个数中去找最小数的位置,最后把ap与a2对调,第三遍从第3到第n个数中去找最小数的位置,把ap和a3对调,此过程重复n-1次后,即把a数组中的n个数按从小到大的顺序拍好,这种排序的方法称为选择排序法。Program selectsort (input, output);Const n=10;Var a: array1.n of integer; i, j, p, t: integer;begin writeln ( input 10 integer num:); for i:=1 to n do read ( ai

13、); readln; /换行 for j:=1 to n-1 dobegin p:=j; /将p始终指向每一次比较的开头 for i:=j to n do if aiap then p:=i; t:=ap; ap:=aj; aj:t;end; writeln (output squ.:); for i:=1 to n dobegin write(ai:5); if (i mod 5)=0 then writelnendend. 竞赛模拟题一、读程序,写出结果var a:array1.3,1.4of integer; b:array1.4,1.3of integer; x,y:integer;b

14、egin for x:=1 to 3 dofor y:=1 to 4 do ax,y:=x-y; for x:=4 downto 1 dofor y:=1 to 3 do bx,y:=ay-x; writeln(b3,2);end.上列程序段的正确输出是() A.-1 B.-2 C.-3 D.-4PROGRAM NOI_002;VAR I,J,L,N,K,S,T: INTEGER;B: ARRAY1.10 OF 0.9;BEGINREADLN(L,N); S:=L;K:=1;T:=L;WHILE S0 DO BEGINJ:=J-1;BJ:=N MOD L;N:=N DIV LEND;FOR I

15、:=10-K+1 TO 10 DO WRITE(CHR(ORD(A)+BI);END输入:4167输出:PROGRAM NOI_004;VARI,J,J1,J2,P,Q: INTEGER;P1: BOOLEAN;B,C: ARRAY1.100 OF INTEGER;BEGINREADLN(Q,P);J:=1;P1:=TRUE;BJ:=Q;J1:=0;WHILE(Q0) AND P1 DOBEGINJ1:=J1+1;CJ1:=Q*10DIV P;Q:=Q*10-CJ1*P;IF QQ THENBEGINJ2:=1;WHILE (BJ2Q) AND (J2=J) DOJ2:=J2+1;IF BJ2

16、=Q THENBEGIN P1:=FALSE;WRITE(0.); FOR I:=1 TO J2-1 DOWRITE(CI:1); WRITE(; FOR I:=J2 TO J1 DOWRITE(CI:1); WRITELN()ENDELSEBEGINJ:=J+1;BJ:=QENDENDEND; IF Q=0 THEN BEGINWRITE(0.);FOR I:=1 TO J1 DOWRITE(CI:1);WRITELN END;READLNEND.输入18输出输入27输出 1Program excpl; var x,y,y1,jk,j1,g,e:Integcr; a:arrayl20of 0

17、9; begin x:3465; y:264; jk:20; for j1:= 1 to 20 do ajl: 0; while y 0 do begin y1:=y mod 10; y:y div 10; while y10 do begin g:=x; for e: Jk downto l do begin g:gae; ae := g mod 10; g:= g div 10 end; y1: y1 l end; jk:jk-1 end; j1=1; while ajl0 do j1:=J1+1; for Jk:=j1 to 20 do write(ajk:4) WRITELN End. 程序输出结果为: program excp2var l,J:integer;;a:array114 of;integer;procdure sw(i1,j1Integer); var k1: Integer;begin for k1:= 1to(j1- i1+1) div 2 do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论