编程pascal,小作文
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/14 06:13:02 体裁作文
篇一:Pascal编程及答案
Pascal编程及答案
一、乘车费用(100分)(存盘程序名:T1)
星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,超过10公里之后在1.8元/公里的基础上加价50%,另外,停车等候则按时间计费:1元/3分(注:不满3分钟不计费)。已知:小明到外婆家路程为N公里,中间停车等候时间总共M分钟,请计算小明到外婆家的出租车费用是多少元?
输入:N M(N,M都是整数)
输出:一个实数(表示车费,精确到0.1元)
例如:输入:8 7
输出:18.8
参考答案:
---------------------------------------
Program t1;
var n,m:integer;
s,zj:real;
Begin
if n>10 then s:=6+(n-2)*1.8+n*1.8*0.5
else if n>2 then s:=6+(n-2)*1.8
else if n<=2 then s:=6;
zj:=s+m div 3;
writeln(zj:5:1);
End.
二、报数游戏(100分)(存盘程序名:T2)
小明和小红一起玩报数游戏:小明按1-A1循环报数,小红按1-A2循环报数。两人同时开始,并以同样的速度报数,当两人都报了N个数时,统计出两人同时报相同数的次数,先算对者获胜。请你算出正确答案,当他俩的裁判。 输入:N(N<=100)
A1 A2 (A1、A2取值范围:2..10)
输出:一个整数
例如:输入:10
2 3
输出:4
参考答案:
program t2;
var t,n,a1,a2,s,aa1,aa2:integer;
begin
writeln('shu ru n');
readln(n);
writeln('shu ru a1 a2');
readln(a1,a2);
t:=0;s:=1; aa1:=1; aa2:=1;
repeat
t:=t+1;
aa1:=aa1+1; if aa1>a1 then aa1:=1;
aa2:=aa2+1; if aa2>a2 then aa2:=1;
if aa1=aa2 then s:=s+1;
until t=n;
writeln(s);
end.
三、单词恢复(100分)(存盘程序名:T3)
小明已学会了N个英语单词,妈妈常帮助他加强记忆:她从这N个单词中挑出一个,并将该单词中的字母顺序变乱,例如:boy变为ybo,再让小明恢复单词的原样。你能编程完成小的任务吗?
输入:N(1<=N<=50)
单词1 单词2 …… 单词N(单词中字母都是小写,单词之间以一个空格分隔)
一个变乱字母顺序的单词
输出:恢复的正确的单词(注:若正确单词不止一个,则每行输出一个单词)
例如:输入:4
School boy student tree
ybo
输出:boy
参考答案:
program t3;
var n,i,j,k:integer;
a:array[1..50]of string;
s,b:string;
flag:boolean;
begin
readln(n);
readln(s);
readln(b);
j:=1;
repeat
i:=pos(' ',s); if i<>0 then begin
a[j]:=copy(s,1,i-1);
j:=j+1;
delete(s,1,i);
end
else begin
a[j]:=s; s:=' '; end;
until s=' ';
{ for j:= 1 to n do
write(a[j]);
end.}
k:=length(b); flag:=false;
for j:=1 to n do begin
for i:=1 to k do
if pos(b[i],a[j])<>0 then flag:=true else break; if flag then begin writeln(a[j]); break; end; end;
end.
四、摘红苹果(100分)(存盘程序名:T4)
小明爷爷家有棵苹果树,树上高低不一的长了N个苹果。一天,M个小朋友到爷爷家做客,爷爷说:你们每人最多可以摘两个苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?请你计算机小朋友们最多能摘到多少个苹果?
输入:N M(N<=100,M<=20)
N个整数(以空格相隔),分别表示每个苹果的高度
M个整数(以空格相隔),分别表示每个小朋友伸手能达到的高度。
篇二:pascal编程
第一章 简单程序............................................................................................................ 1
第一节 Pascal 程序结构和基本语句 ......................................................................... 2
第二节 顺序结构程序与基本数据类型 ...................................................................... 6
第二章 分支程序............................................................................................................ 9
第一节 条件语句与复合语句 .................................................................................... 9
第二节 情况语句与算术标准函数 ........................................................................... 11
第三章 循环程序.......................................................................................................... 14
第一节 for 循环 .................................................................................................... 14
第二节 repeat 循环 ............................................................................................... 20
第三节 While 循环 ............................................................................................... 24
第四章 函数与过程 ...................................................................................................... 29
第一节 函数.......................................................................................................... 29
第二节 自定义过程 ............................................................................................... 32
第五章 Pascal的自定义数据类型 ................................................................................ 37
第一节 数组与子界类型 ........................................................................................ 37
第二节 二维数组与枚举类型 ................................................................................. 44
第三节 集合类型................................................................................................... 52
第四节 记录类型和文件类型 ................................................................................. 56
第五节 指针类型与动态数据结构 ........................................................................... 64
第六章 程序设计与基本算法 .......................................................................................... 69
第一节 递推与递归算法 ........................................................................................ 69
第二节 回溯算法................................................................................................... 76
第七章 数据结构及其应用............................................................................................ 81
第一节 线性表 ...................................................................................................... 81
第二节 队列.......................................................................................................... 85
第三节 栈 ............................................................................................................. 88
第四节 数组.......................................................................................................... 91
第八章 搜索 .................................................................................................................. 94
第一节 深度优先搜索............................................................................................ 94
第二节 广度优先搜索...........................................................................................105
第九章 其他常用知识和算法 .........................................................................................108
第一节 图论及其基本算法....................................................................................108
第二节 动态规划..................................................................................................114 备注 注意事项及跟C的差别 .....................................................................................118
第一章 简单程序
无论做任何事情,都要有一定的方式方法与处理步骤。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。为了使计算机有效地解决某些问题,须将处理步
骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。在Pascal语言中,执行每条语句都是由计算机完成相应的操作。编写Pascal程序,是利用Pascal语句的功能来实现和达到预定的处理要求。“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。
第一节 Pascal 程序结构和基本语句
在未系统学习Pascal语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。
[例1.1]编程在屏幕上显示“Hello World!”。
Pascal程序:
Program ex11;
Begin
Writeln(‘Hello World!’);
ReadLn;
End.
这个简单样例程序,希望大家的程序设计学习能有一个良好的开端。程序中的Writeln是一个输出语句,它能命令计算机在屏幕上输出相应的内容,而紧跟Writeln语句后是一对圆括号,其中用单引号引起的部分将被原原本本地显示出来。
[例1.2]已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少?
解:若总售价用m来表示,则这个问题可分为以下几步处理:
= 1 \* GB3 ①从键盘输入自行车的数目a;
= 2 \* GB3 ②用公式 m=300*a 计算总售价;
= 3 \* GB3 ③输出计算结果。
Pascal程序:
Program Ex12; {程序首部}
Var a,m : integer; {说明部分}
Begin {语句部分}
Write(‘a=’);
ReadLn(a); {输入自行车数目}
M := 300*a; {计算总售价}
Writeln(‘M=’,m); {输出总售价}
ReadLn; {等待输入回车键}
End.
此题程序结构完整,从中可看出一个Pascal 程序由三部分组成:
(1)程序首部
由保留字Program开头,后面跟一个程序名(如:Exl1);其格式为:
Program 程序名;
程序名由用户自己取,它的第一个字符必须是英文字母,其后的字符只能是字母或数字和下划线组成,程序名中不能出现运算符、标点符和空格。
(2)说明部分
程序中所用的常量、变量,或类型、及过程与自定义函数,需在使用之前预先说明,定义数据的属性(类型)。[例1.2] 程序中 Var S,R,C: Real; 是变量说明,此处说明S,R,C三个变量均为实数类型变量。只有被说明为某一类型的变量,在程序中才能将与该变量同类型的数值赋给该变量。变量说明的格式为:
Var 变量表:类型;
(3)语句部分
指由保留字 Begin (开始)至 End. (结尾)之间的语句系列,是解决问题的具体处理步骤,也是程序的执行部分。
Pascal程序不管是哪部分,每句末尾都必须有分号(;),但允许最接近 End 的那个语句末尾的分号省略;程序结束的End末尾必须有圆点(. ),是整个程序的结束标志。
程序中花括号“{ }”之间的部分为注释部分。
Pascal程序结构可归纳用如下来表示:
Program 程序名; 程序首部
标号说明; (Label)
常量说明; (Const) 说明部分
类型说明; (Type)
变量说明; (Var)
过程或函数说明;
Begin 程序体 (主程序)
语句系列; 语句部分
End.
把处理问题的步骤编成能从上到下顺序执行的程序,是简单程序的基本特征。再来分析下面两道例题的Pascal程序结构和继续学习基本语句。
[例1.3]编程计算半径为R的圆的面积和周长。
解:这是一个简单问题,按数学方法可分以下几步进行处理:
① 从键盘输入半径的值R; { 要求告诉圆的半径R }
② 用公式 S=πR2 计算圆面积;
③ 用公式 C=2πR 计算圆周长;
④ 输出计算结果。
Pascal程序:
Program Ex13; {程序首部 }
Var R,S,C: Real; {说明部分 }
Begin {语句部分 }
Write ('R=?');
Readln(R); {输入半径 }
S:=Pi*R*R; {圆面积公式S=πR2}
C:=2*Pi*R; {圆周长公式C=2πR}
Writeln('S=',S); {输出结果 }
Writeln('C=',C);
Readln {等待输入回车键}
End.
程序中Pi是Pascal提供的标准函数,它返回圆周率的近似值:3.1415926…。
(:=)是赋值符号,赋值语句的格式为:
变量:=表达式;
赋值语句的作用是将:=右边表达式的值记录到左边的变量中。
Writeln是输出语句,输出语句有三种格式:
① Write (输出项1,输出项2) ; {执行输出后光标不换行}
② Writeln (输出项1,输出项2) ; {执行输出后光标换到下一行}
③ Writeln {仅输出空白且光标换到下一行}
Writeln语句后面的圆括号以内部分均为输出项,可以是多项,各项间用逗号分隔; 对单引号里的内容按照引号内的原样(字符)输出显示。如果输出项是表达式,则只输出表达式的值,而不是表达式本身。
[例1.4] 输出两个自然数相除的商和余数。
解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。题中未给出具体的自然数A、B,可采用键盘输入方式。
① 给出提示,从键盘输入a, b;
② ③ ④ ⑤ 显示两数相除的数学形式; 求出a除以b的商c; 求出a除以b的余数d; 紧接等式后面输出显示商和余数。
Pascal程序:
Program Ex14;
Var a,b,c,d : integer;
Begin
Write('INPUT A,B:'); {给出提示信息}
Readln(a,b); {输入a,b}
Writeln; {输出一空行}
Write(a,'/',b,'='); {输出等式之后不换行}
c:=a div b; {整除运算,取商的整数部分}
d:=a mod b; {相除求余运算,取商的余数部分}
Writeln(C,'?',d); {输出后自动换行 }
Readln {等待输入回车键 }
End.
执行本程序中第一个Write语句,输出其引号以内的一串提示信息,是给紧接着的输入语句提供明确的提示(要求),有“一目了然,人机对话”之效果。
Readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。
Readln是输入语句,它的一般格式为:
① Read (变量1,变量2);
② Readln (变量1,变量2);
③ Readln
前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。若多输入了数据(即数据个数超过变量个数),Read语句读完数据之后,能让后续的读语句接着读取多下来的数据;而Readln 语句对本行多输入的数据不能让后续语句接着读取多下来的数据。为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用Readln语句输入数据。第三种格式不需输入数据,只需按入一个回车键。
322[例1.5]自然数的立方可以表示为两个整数的平方之差,比如4=10-6,请输出自然数1996
32的这种表示形式。(这里的4用自乘三次的形式4*4*4表示;10也用自乘二次的形式10*10
表示)
解:此题没有现成的计算公式能直接利用,但可以自行推出处理方法或构建适当的运算公式,按着构想的处理方案编排出各步骤。
设这个自然数为N,两个平方数分别为X,Y, 将问题表示为求 N=X—Y
① 先找出X的值,仔细观察题中的示例,用数学方法归纳可得出X=N*(N+1)/2;(构成本题可用的计算公式)
② 再仔细观察,发现Y值比X小一个N值,即 Y=X—N;
③ 输出等式 N=X—Y 或N*N*N=X*X—Y*Y
Pascal程序:
Program Ex15;
Const N=1996; {常量说明 }
Var X,Y: Longint; {变量说明,此题计算中的数值较大,用长整型 }
Begin
X:=N*(N+1) div 2; { div 是整除运算 }
Y:=X-N;
Writeln(N,'*',N,'*', N,'=', X,'*', X,'—',Y,'*',Y); { 输出结果 }
Readln
End.
本程序中N是常量,X,Y是变量,为长整数类型(Longint); 程序中的div 是整除运算,其结果只取商的整数部分;
2[例1.6] 求一元二次方程x+3x+2=0的两个实数根。
解:方程的系数是常量,分别用a,b,c表示,可运用数学上现成的求根公式求方程的根,采取如下方法:
① 先求出d=b2-4ac;(求根公式中需用开方运算的那部分)
② 再用求根公式算出x1,x2的值。(x1,x2 = ? )
③ 输出x1,x2.
Pascal程序:
program Ex16;
Const a=1; {常量说明 }
b=3;
c=2; {a,b,c表示方程系数}
Var d : integer; {d为整型变量}
X1,X2: Real; {X1,X2为实型变量}
Begin
322322
篇三:PASCAL图形操作教程
基本几何图形的绘制
的自编程序中。
Turbo Pascal图形编程教程
Pascal是一款有很强图形功能的开发工具,它可以编制各种图形窗口,并且听说还支持鼠标.但是时过境迁,
在vb,vc一统天下的今天,关于Pascal图形操作的书已经像古董一样难于寻找了,我现在将Tp 7.0的Help文件
中的一些有关图形操作的过程与函数整理了一下,并自己写了一些例子,加入了一些自己的看法,便得到了这篇
教程.其中如有错误,望各位不吝赐教。阅读之前希望大家做好准备,比如:找一些食品放在跟前,因为你可能
因为钻研一个函数而耗费大量的时间,还有你可能因为初始化无法完成而大动肝火。
第一章 使用Pascal进行图形操作前的准备
在 Turbo Pascal 中有一个 CRT 单元及一个 GRAPH 单元,简单的说 crt 单元是为了实现 字符的显示与处理,另外的那个称为 GRAPH 单元是专门用来处理图形的。我们看到的有关图形的程序往往都要用到。所以若是要在 Turbo Pascal 中实现图形操作,就必须要调用 CRT 单元及GRAPH 单元。那么怎么样来调用 CRT 及 GRAPH 单元呢?现在线来介绍一下单元调用语句:USES
USES的语法:
USES 单元表识符,……,单元表识符;
说明:
扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。
位置:变量说明var之前。
讲到这里,我还是要顺便提一下什么是单元?是这样的:我们在编程序的时候,要用到 procedure 或者 function ,中文名称一个是过程另一个是函数。做不同的程序时,往往要用到一些相同的过程或者相同的函数。如果统统放到程序中,程序会硕大无比,比例与调试与编译,并且在过去 “惜kb如金”的年代里,这样的程序也很浪费。于是,简单的讲,人们把它们做成“包”--我 们称之为单元。一来,免去很多重复的痛苦,大家共享代码也很简单,另外,很多不愿意让别人看到源程序的人也很乐于如此----这只是我的杜撰。生产 pascal 语言的公司也提供一些做好的单元,放在安装盘上方便实用。 crt ,graph 即使如此,还有 dos ,system 等等。
第二章 Pascal图形模式的初始化及退出
1.初始化
Pascal的图形操作在使用之前必须先进行初始化。如果说你编写图形程序中出现问题,是有八九十卡在这里了。 这也是非常令我头疼的问题。 用过程
initgraph(GraphDriver,GraphMode,PathToDriver)
其中 GraphDriver , GraphMode 为整形变量, PathToDriver为字符串变量, GraphDriver为图形驱动器,GraphMode为图形模式 , PathToDriver指定的路径名中建筑图形驱动程序(以.BGI为后缀)。initgraph使用方法见下例:
program t001 (input,output);
uses crt,graph;
var
gd:gm:integer; {定义GraphDriver,GraphMode变量}
begin
gd:=detect;
initgraph(gd,gm,''); {调用initgraph过程,PathToDriver缺省则表示在当前目录中寻找
《-------这个很重要,一般也可以写成 initgraph(gd,gm,'c:\tp\bgi'); 当然
如果你是如此安装的话。}
bar(100,100,200,200); {画一个以(100,100),(200,200)为顶点的矩形,这是一个标准过程,
你在后面还会看到一个名为bar3d的东东,那个是画立体矩形的}
delay(1000); {将此图形保留一秒,10000就是10秒,依此类推}
end.
2.退出
Closegraph过程
功能:退出图形模式.
在图形模式下如果使用 write 等等文本输出可能会出问题---比如无法看到等等。好像还可能引起显示上的问题,反正养成一个好习惯也没什么不好的。这里有一个技巧,当你发现无论如何调整都无法显示图形时,你可以调用自带的例子,用来测试,看看是否是程序本身的问题。
注意,这里有一个不属于图形的,但是非常容易遇到的问题。前面我们说过,在图形编程使用 graph 单元的时候,我们也常常会使用crt单元,这就有一个问题:crt 单元在主频高的机器上无法正常运行。会出现 200 号错误!!!请下载补丁,在我们的网站上就有。还有一种情况,就是出了问题没有提示!表现是运行程序什么反应也没有。如果你出现这种情况,首先检查程序,如果没有问题,非常有可能使这种情况,也请下载补丁!据报告奔腾180以上的机器具都不同程度存在这种问题!
第三章 基本几何图形的绘制
画直线:
1.Line过程
描述:procedure Line(x1, y1, x2, y2: Integer);两点确定一直线.够简单吧!
2.Lineto过程
描述:procedure LineTo(X, Y: Integer);从当前点项目标点(x,y)作直线.
画圆:
1.Circle过程
功能:以(X,Y)为圆心、Radius为半画一圆。
描述:procedure Circle(X,Y:Integer;Radius:Word);
示例:Circle(100,100,200) {画一个以(100,100)为圆心,200为半径的圆}
画椭圆:
1. Ellipse过程
功能:画一个以(X,Y)为中心,XRadius和YRadius为半轴,StAngle和EndAngle为始角和终角的椭圆弧。
描述:procedure Ellipse(X,Y:Integer;StAngle,EndAngle:Word;XRadius,YRadius:Word); 说明:角度沿逆时针方向,单位是度。0度指向东。
画圆弧:
篇四:Pascal语言编程基础程序
Pascal语言编程基础程序
(常州市)
十进制转二进制 var i,n,j:longint;
a:array[1..100] of longint; begin
readln(n); i:=1;
while n<>0 do begin
a[i]:=n mod 2; i:=i+1; n:=n div 2; end; write('Bin:');
for j:= i-1 downto 1 do write(a[j]) end. 数组元素删除
var a:array[1..10]of longint; i,t,x:longint; begin read(x);
for i:=1 to 10 do a[i]:=2*i-1; t:=a[x];
for i:=x+1 to 10 do a[i-1]:=a[i]; for i:=1 to 9 do write(a[i]:4); end.
数组元素删除2
var a:array[1..11]of longint; i:longint; begin
for i:=1 to 10 do a[i]:=i; a[11]:=a[1]; for i:= 1 to 10 do a[i]:=a[i+1]; for i:= 1 to 10 do write(a[i]:4);
end.
数组元素的移动
var a:array[1..10] of longint; s,n,i,x,t:longint; begin
readln(n); for i:=1 to n do read(a[i]); readln(x); s:=a[x];
for i:=x+1 to n do a[i-1]:=a[i]; for i:=1 to n-1 do write(a[i],' '); write(s); end.
排除所有异形基因
var a:array[1..100] of longint; n,g,j,i,wz:longint; begin
readln(n);
for i:=1 to n do read(a[i]); g:=0;
for i:=1 to n do if sqr(a[i]) mod 7=1 then begin wz:=i;
for j:=wz+1 to n do a[j-1]:=a[j]; g:=g+1 end; write(a[1]); for i:=2 to n-g do write(' ',a[i]); writeln; end.
排除第一个异形基因
var a:array[1..100] of longint; n,i,wz:longint; begin
readln(n);
for i:=1 to n do read(a[i]); for i:=1 to n do if sqr(a[i]) mod 7=1
then begin wz:=i; break; end; for i:=wz+1 to n do a[i-1]:=a[i]; write(a[1]); for i:=2 to n-1 do write(' ',a[i]); writeln; end. 排除所有 var i,n,j,s:longint;
a:array[0..100] of longint; begin
readln(n); i:=0;
while n<>0 do begin
a[i]:=n mod 2; i:=i+1; n:=n div 2; end; s:=0;
for j:=i-1 downto 0 do begin
if (s=0)and(a[j]=1) then begin write(j);s:=1; end
else if (a[j]=1) then write(' ',j); end; writeln; end. 排名
var a:array[1..100] of real; xh:array[1..100]of longint; n,j,i,k:longint; t:real; begin read(n);
for i:=1 to n do read(a[i]); for i:=1 to n do begin for j:=1 to n-1 do
if a[j] end; end; for i:=1 to n do writeln('NO',i,':',xh[i ]); end. 排队迟到 var n,x,y,wz,xwz,i :longint; a:array[1..100]of longint; begin readln(n,x,y); for i:=1 to n do read(a[i]); for i:=1 to n do if x=a[i] then xwz:=i; wz:=xwz+1; for i:=n downto wz do a[i+1]:=a[i]; a[wz]:=y ; write(a[1]); for i:=2 to n+1 do write(' ',a[i]); writeln; end. 元素插入有序数组 var n,i,x,y,wz,m:longint; a:array[1..100]of longint; begin readln(n); readln(m); for i:=1 to m do read(a[i]); wz:=m+1; for i:= 1 to m do if n<=a[i] then begin wz:=i; break;end; if wz<>0 then for i:=m downto wz do a[i+1]:=a[i]; a[wz]:=n ; write(a[1]); for i:=2 to m+1 do write(' ',a[i]); writeln; end. 数组平移 var a:array[1..11]of longint; i:longint; begin for i:=1 to 10 do a[i]:=i; a[11]:=a[1]; for i:= 1 to 10 do a[i]:=a[i+1]; for i:= 1 to 10 do write(a[i]:4); end. 排除第一个异形基因 var a:array[1..100] of longint; n,i,wz:longint; begin readln(n); for i:=1 to n do read(a[i]); for i:=1 to n do if sqr(a[i]) mod 7=1 then begin wz:=i; break; end; for i:=wz+1 to n do a[i-1]:=a[i]; write(a[1]); for i:=2 to n-1 do write(' ',a[i]); writeln; end. 各位数之和2 var a:string; s,i:longint; begin readln(a); s:=0; for i:=1 to length (a) do s:=s+ord(a[i])-48; writeln(s); end. 八进制回文数-提高 var a:array[1..100] of longint; n,i,j,t,l,r,f:longint; begin read(n); i:=1; while n<>0 do begin a[i]:=n mod 8; i:=i+1; n:=n div 8; end; write('Oct:' ); for j:=i-1 downto 1 do write(a[j]); f:=0;l:=1;r:=i-1; while l<=r do if a[l]=a[r] then begin l:=l+1;r:=r-1; end else begin f:=1;break; end; writeln; if f=0 then writeln('YES') else writeln('NO'); end. 最大公约数2 var ans,n,r,i,t:longint; function work(a,b:longint):longint; begin if a mod b=0 then work:=b else work:=work(b,a mod b); end; begin readln(n); read(ans); for i:=2 to n do begin read(r); if r then begin t:=r;r:=ans; ans:=t;end; ans:=work(r,ans); end; writeln(ans); end. 走台阶 var n:longint; function ztj(a:longint):longint; begin if a=1 then ztj:=1 else if a=2 then ztj:=2 else ztj:=ztj(a-1)+ztj(a-2); end; begin readln(n); writeln(ztj(n)); end. 自然数拆分 var n:longint; a:array[1..100]of longint; procedure try(dep,lasti,r:longint); var i:longint; begin if r<=0 then if r=0 then begin for i:=1 to dep-1 do write(a[i]:3); writeln end else else for i:=lasti downto 1 do begin a[dep]:=i; try(dep+1,i,r-i); end; end; begin read(n); try(1,n,n); end. 自然数拆分2 var n:longint; a:array[1..100]of longint; procedure cfs(dep,n,x:longint); var i:longint; begin if n=0 then begin for i:=1 to dep-2 do write(a[i],' '); writeln(a[dep-1]); end else begin for i:=x to n do begin a[dep]:=i; cfs(dep+1,n-i,i); end; end; end; begin readln(n); cfs(1,n,1); end. 自然对数的底 var i,n,m,cc,p,k : longint; a,b,c : array[0..10010] of longint; Procedure addb; var j: longint; begin if m>cc then cc:=m; for j:=1 to cc do inc(c[j],b[j]); for j:=cc downto 1 do begin inc(c[j-1], c[j] div 10); c[j]:= c[j] mod 10; end; end; Procedure divi(k:longint); var j,t: longint; begin t:=0; j:=1; while (j<=n+10) do begin b[j]:=(a[j]+t*10) div k; t:=(a[j]+t*10) mod k; if j>m then m:=j; inc(j); if (t=0) and (j>m) then break; end; a:=b; end; begin readln(n); fillchar(b,sizeof(b),0); fillchar(c,sizeof(c),0); fillchar(a,sizeof(a),0); a[1]:=10; m:=1; cc:=1; i:=2; k:=0; while k=0 do begin divi(i); addb; inc(i); k:=1; for p:=1 to cc do if b[p]<>0 then begin k:=0; break; end; end; write('2.'); for i:=1 to n do write(c[i]); writeln; end. 字符串逆序 Var n:string; procedure w(s:longint); begin if s<1 then writeln else begin write(n[s]); w(s-1); end; end; begin readln(n); w(length(n)); end. 猪猪的反击 Var n,m,i,j,s:longint; a:array [1..100,1..100] of longint; begin readln(n,m); fillchar(a,sizeof(a),0); for i:=1 to n do for j:=1 to m do read(a[i,j]); i:=1; j:=1; s:=a[1,1]; while i if a[i+1,j] Var m,n,i,j,t:longint; a:array[1..100,1..3] of longint; begin readln(m,n); t:=0; for i:=1 to n do readln(a[i,1],a[i,2],a[i,3]); for i:=0 to m do if i mod 5=0 then begin for j:=1 to n+1 do if j=n+1 then inc(t,16) else if (i>=a[j,1]) and (i<=a[j,2]) then begin inc(t,a[j,3]); break; end 篇五:Pascal语言编程环境 信息学奥赛第五讲(上) Pascal语言编程环境 戴 勇 一、 本课任务 (一) 掌握Free Pascal的下载、安装和启动。 (二) 了解Free Pascal IDE的菜单。 (三) 掌握简单Free Pascal程序的编辑、编译和运行。 二、 主要内容 (一) Free Pascal的下载、安装和启动 1、 根据你的系统下载对应的文件(FPascal4NOI-2kXP或FPascal4NOI-win98) a. http://162.105.81.201/noip/FP4NOI/fp4noi.html (权威!但较慢) b. /retype/zoom/46bc039251e79b89680226d0?pn=1&x=0&y=0&raww=644&rawh=245&o=jpg_6_0_______&type=pic&aimh=182.60869565217394&md5sum=45c19f1eb449bd2286a768783c2c0bf1&sign=0ed114cf35&zoom=&png=0-6936&jpg=0-100967" target="_blank">点此查看 h. Options菜单(略) j. Help菜单(略) 三、 练习 (一) 下载并安装FPascal4NOI。 (二) 试着编辑、调试运行一个Pascal程序。