云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 挺好的pascal教程

挺好的pascal教程

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 3:46:18

write(0:8,1:8); repeat c:=a+b; write(c:8); a:=b; b:=c;

geshu:=geshu+1;

if geshu mod 5=0 then writeln; until geshu=30; readln; end.

用while编写 program ex3;

Var a,b,c,geshu:longint; begin a:=0; b:=1; geshu:=2; write(0:8,1:8); while geshu<30 do begin c:=a+b; write(c:8); a:=b; b:=c;

geshu:=geshu+1;

if geshu mod 5=0 then writeln; end; readln; end.

用for编写: program ex3;

Var i,a,b,c,geshu:longint; begin a:=0; b:=1; geshu:=2; write(0:8,1:8); for i:=1 to 28 do begin c:=a+b; write(c:8); a:=b; b:=c;

geshu:=geshu+1;

if geshu mod 5=0 then writeln; end; readln; end.

这道题目充分说明,各种循环方法可以互换,只要懂得算法。语言只是表达算法的手段。 网上做的另一种方法: program ex3; Var

geshu,i,n,m:longint; begin

geshu:=2; write(0:8,1:8); n:=0; m:=1;

while geshu<30 do begin

i:=n; n:=m; m:=i+n; write(m:8); inc(geshu);

if geshu mod 5=0 then writeln; end; readln; end.

3.小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时, 小球共通过多少路程? program ex3;

var i,cishu:longint; a,s:real; begin a:=100; s:=0; cishu:=0;

for i:=1 to 19 do begin

s:=s+a+a/2; a:=a/2;

cishu:=cishu+1; end;

writeln(s+a:0:4); readln; end.

答案:299.9996

说明:在思考时要考虑到小球每一次是v字形落地,第一次落地是100+反弹50,第二次是50+反弹25,最后一次落地只算落地,不算反弹。

4.某登山队员第一天登上山峰高度的一半又24米; 第二天登上余下高度的一半又24米;每天均如此。到第七天,距山顶还剩91米。求此山峰的高度? program ex3; var t,s:integer; begin s:=91;

for t:=1 to 6 do s:=(s+24)*2; writeln(s); readln; end.

答案:8848

5.给出某整数N,将N写成因数相乘的形式。如: N=12,输出: 12=1*2*2*3. 方法1: 思路:其实数学思路就是分解质因数,分解质因数的方法是首先用2来整除,如果不能整除,试试3能不能整除,不能的话,看看4能不能整除,这样累加来找第一个质因数,如果能整除,那么通过循环,来输出一个个质因数,直到除数为1说明已经整除完毕。

找质因数的方法是通过循环的,那么repeat..until直到型循环,直到什么时候不循环呢,肯定是m=n,比如,这个数是17,那么不能被2整除,肯定要1个个累加,到除数为17时候,才能找到d=1,才能输出这个因数。

这里提醒下,要熟练运用累加函数inc,在具体程序中肯定方便了,不需要先申明m为0。 因此在循环次数不确定的场合,repeat..until循环就发挥了大作用哦。 program t3; var

n,d,m:longint; begin

readln(n); m:=2; d:=n; write(n,'=1*');

repeat

if (d mod m)<>0 then inc(m) else begin

d:=d div m;

if (d=1) then write(m) else write(m,'*'); end; until m=n; readln; end.

6.外出旅游的几位朋友决定次日早晨共分一筐苹果。天刚亮,第一个人醒来,他先拿了一个,再把筐里的八分之一拿走;第二个人醒来,先拿两个,再把筐里的八分之一拿走;第三个人醒来,先拿三个,再拿走筐里的八分之一;?每个人依次照此方法拿出各人的苹果,最后筐里的苹果全部拿完,他们每人所拿到的苹果数正巧一样多。求原先筐里的苹果数和人数。

说明:当有些题目无法解答的时候,我们可以用枚举的方法,根据一定数量关系,设置一定区域的数量,然后根据题目所给的数量关系,比如这道题目中,每个人的苹果一样多,我们根据这个数量关系可以得出:(1+(p-1)/8=p/r,还可以知道,苹果数能整除人数。这样就能回答出问题。虽然这种解题方法不是十分好,也许要不断设置不同范围的数字,但不失为一种解题思路,尤其是无法解答时候的思路。 program ex7; var p,r:integer; begin

for p:=3 to 500 do for r:=1 to 100 do

if (1+(p-1)/8=p/r) and (p mod r=0) then writeln(p,' ',r); readln; end. 7、图中由6个圆圈构成三角形,每条边上有三个圈, 将自然数1--6 不重复地填入各圆圈位置上,使每条边圆圈上的数字之和相等,请编程输出所有的填法。

program ex7;

var a,b,c,d,e,f:integer; begin

for a:=1 to 6 do for b:=1 to 6 do if a<>b then

for c:=1 to 6 do

if (a<>c) and (b<>c) then for d:=1 to 6 do

if (a<>d) and (b<>d) and (c<>d) then for e:=1 to 6 do

if (a<>e) and (b<>e) and (c<>e) and (d<>e) then begin

f:=21-a-b-c-d-e;

if ((a+b+d)=(a+c+f)) and ((a+b+d)=(d+e+f)) then writeln('fangan:',a:3,b:3,d:3,',',a:3,c:3,f:3,',',d:3,e:3,f:3) end; readln; end.

8、出租车计费(算法训练时候做)

在生活中,我们经常乘坐出租车,出租车的计费是一个很有趣的问题。在某市,出租车的起价费是3公里之内8元;超过3公里后,15.1公里之内,每550米计费1元;而超过15.1

公里之后,每370米计费1元。这样,乘坐出租车的里程越远,花费就会越多。例如,行驶30公里时,就需要付费70元。但是有经验的老手告诉我们,实际上没有必要花那么多钱,如果从中途下车再打一辆车(相当于在中途结一次帐),就能够少花一些钱。 请验证老手的话,求出在行驶多少米时结一次帐是最便宜的。 输入: 总里程数。 输出:

第一行:中途结账地点距离起点的路程。 第二行:最少付费值。 9、《全国信息学竞赛》p98价格竞猜 10、《全国信息学竞赛》p98满载爱的代码

第四章 pascal的自定义数据类型

到现在为止,我们学习了4中数据类型(实型、整型、字符型、布尔型),他们是由pascal预先定义好的标准数据类型。

Pascal系统允许用户自定义的数据类型有:数组类型、子界类型、枚举类型、集合类型、记录类型、文件类型、指针类型。

一、数组类型

1、认识数组

输入3个整数,由程序计算它们的平均数,并将其中低于平均数的数显示出来。

那么,如果要输入100个整数,计算平均数呢?那就需要定义100个变量,写100个readln

语句,100个if语句和100个writeln语句,这是很繁琐的,也是不现实的。

通过分析程序中各个变量的用途,我们可以看出a、b、c都是用于待处理的数,而且都是相同的数据类型。在现实问题中,还有许多数据像a、b、c这样具有同等意义和相同的数据类型,例如班级名单上的50个姓名,课表中的30节课,一幢楼房里的60个门牌号,在编程时,将每组同类型数据用整体、统一的方式来存储和处理,则可大大简化程序。

在编程中,我们用数组(array)来表示这样的一组数据。

数组是同类型的一组数据按照一定关系排列成的表。数组中的每一个数据叫做数组元素,简称元素。每个数组都有确定的元素数目和下标范围。

数组类型是一种自定义数据类型,因此需要在程序中预先进行定义,规定数组的元素类型和下标范围。

在pascal中,数组的定义格式如下: 第一种:

program pjs; var

a,b,c,tot:integer; ave:real; begin

readln(a); readln(b); readln(c);

tot:=(a+b+c+d+e); ave:=tot/3;

if a

搜索更多关于: 挺好的pascal教程 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

write(0:8,1:8); repeat c:=a+b; write(c:8); a:=b; b:=c; geshu:=geshu+1; if geshu mod 5=0 then writeln; until geshu=30; readln; end. 用while编写 program ex3; Var a,b,c,geshu:longint; begin a:=0; b:=1; geshu:=2; write(0:8,1:8); while geshu<30 do begin c:=a+b; write(c

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com