pascal下载编程 给出一个整数a,如果a小于0,那么输出两行,第一行是Wrong,第二行是a。如果a大于0,那么也输出

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
pascal.28.doc
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
ACM_2!-奥赛_算法教程_Pascal.doc110页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:50 &&
你可能关注的文档:
··········
··········
信息学奥赛辅导教程
算法与程序设计普通高中课程方案的特点
通常设计一个“好”的算法,应考虑达到以下目标。
1.正确性:算法应当满足具体问题的需求。
2.可读性:算法主要是为了人的阅读与交流,其次才是机器执行。可读性好有助于人对算法的理解。
3.健壮性:当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫明其妙的输出结果。
4.效率与低存储量需求。
效率指的是算法执行时间。对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。低存储量需求指算法执行过程中所需要的最大存储空间。
算法分析的任务是对设计出的每一个具体的算法,利用数学工具,讨论各种复杂度,以探讨某种具体算法适用于哪类问题,或某类问题宜采用哪种算法。
算法的复杂度分时间复杂度和空间复杂度。时间复杂度是在运行算法时所耗费的时间为f n (即?n的函数)。空间复杂度是实现算法所占用的空间为g n (也为n的函数)。称O f n
为该算法的复杂度。
程序是对所要解决的问题的各个对象和处理规则的描述,或者说是数据结构和算法的描述,因此有人说,数据结构+算法=程序。
2.程序设计
程序设计就是设计、编制和调试程序的过程。程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。就程序设计方法和技
除了好的程序设计方法和技术之外,程序设计风格也很重要。因为程序设计风格会深刻影
一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序是由人要形成良好的程序设计风格,主要应注重源程序文档化号名的命名:符号名的命名应具有一定
正在加载中,请稍后...问问,急!!!!!_pascal吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:6,683贴子:
问问,急!!!!!收藏
快试试吧,可以对自己使用挽尊卡咯~◆◆
有道题不会了啊!!大家帮帮忙吧!非常感谢!!
1. 锻炼计划(exercise.pas)身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题。小x设计了自己的锻炼计划,但他不知道这个计划是否可行,换句话说如果计划不当可能会让他的体力超支,所以小x请你帮助他。一天有1440分钟,所以小x列出的是这一整天第1至第1440分钟的计划。小x的体力用一个整数来表示,他会按照计划表进行锻炼,同时,每分钟小x的体力会自动增加1。如果某一分钟末小x的体力小于等于零,那么可怜的小x就累死了……输入(exercise.in)第一行是用空格分开的两个整数n,m,分别表示小x的初始体力值和计划的项目数量。从第二行开始的m行,每行描述一个锻炼项目:名称、开始时间a、结束时间b、每分钟耗费的体力(用空格分隔),表示此项目从第a分钟初开始,第b分钟末结束。锻炼项目按照开始时间递增顺序给出,不会出现两个项目时间冲突的情况。输出(exercise.out)&&&& 输出包括两行,如果计划可行,第一行输出"Accepted",第二行输出这一天过后最后剩余的体力;否则在第一行输出"Runtime Error",第二行输出在第几分钟累死。样例Input&&&& Output10&&& 1Basketball 1 10&& 1&&&& Accepted14401 1Nunchakus 1 1 2&&&& Runtime Error1约定0&n&=2^31-10&=m&=500所有中间值的绝对值不会超过2^31-1每一个锻炼项目的名称不超过20个字符,其中不含空格。
只要说怎样把锻炼项目的名称读入就可以了,非常感谢!
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或第一章 简单程序
无论做任何事情,都要有一定的方式方法与处理步骤。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成&序列&,让计算机自动识别并执行这个用计算机语言组成的&序列&,完成预定的任务。将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。在Pascal语言中,执行每条语句都是由计算机完成相应的操作。编写Pascal程序,是利用Pascal语句的功能来实现和达到预定的处理要求。&千里之行,始于足下&,我们从简单程序学起,逐步了解和掌握怎样编写程序。
第一节& Pascal 程序结构和基本语句
在未系统学习Pascal语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。
[例1.1]编程在屏幕上显示&Hello World!&。
& Pascal程序:
Program ex11;
& Writeln(&Hello World!&);
&&&&&& 这个简单样例程序,希望大家的程序设计学习能有一个良好的开端。程序中的Writeln是一个输出语句,它能命令计算机在屏幕上输出相应的内容,而紧跟Writeln语句后是一对圆括号,其中用单引号引起的部分将被原原本本地显示出来。
[例1.2]已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少?
解:若总售价用m来表示,则这个问题可分为以下几步处理:
①从键盘输入自行车的数目a;
②用公式& m=300*a& 计算总售价;
③输出计算结果。
Pascal程序:
& Program Ex12;& &&&&&&&&&&&&&&&&&&&&&&&&&&&& {程序首部}
& Var a,m :&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {说明部分}
& Begin&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {语句部分}
&&& Write(&a=&);
&&& ReadLn(a);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {输入自行车数目}
&&& M := 300*a;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {计算总售价}
&&& Writeln(&M=&,m);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {输出总售价}
&&& ReadLn;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {等待输入回车键}
此题程序结构完整,从中可看出一个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.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&& 图1.1& Pascal程序的结构
把处理问题的步骤编成能从上到下顺序执行的程序,是简单程序的基本特征。再来分析下面两道例题的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&&&&&&&&&&&&&&&&&&&& {等待输入回车键}&&&&&&&&&&&&&&&&&&
程序中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;
&&&&& 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&&&&&&&&&&&&&&&&&&&&&&& {等待输入回车键 }
执行本程序中第一个Write语句,输出其引号以内的一串提示信息,是给紧接着的输入语句提供明确的提示(要求),有&一目了然,人机对话&之效果。
Readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。
Readln是输入语句,它的一般格式为:
&&&&&&&&&&&&& ① Read&&&& (变量1,变量2);&
&&&&&&&&&&&&& ② Readln&& (变量1,变量2);&
&&&&&&&&&&&&& ③ Readln
前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。若多输入了数据(即数据个数超过变量个数),Read语句读完数据之后,能让后续的读语句接着读取多下来的数据;而Readln 语句对本行多输入的数据不能让后续语句接着读取多下来的数据。为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用Readln语句输入数据。第三种格式不需输入数据,只需按入一个回车键。
[例1.5]自然数的立方可以表示为两个整数的平方之差,比如43=102-62,请输出自然数1996的这种表示形式。(这里的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)
解:此题没有现成的计算公式能直接利用,但可以自行推出处理方法或构建适当的运算公式,按着构想的处理方案编排出各步骤。
设这个自然数为N,两个平方数分别为X,Y, 将问题表示为求 N3=X2&Y2
① 先找出X的值,仔细观察题中的示例,用数学方法归纳可得出X=N*(N+1)/2;(构成本题可用的计算公式)
② 再仔细观察,发现Y值比X小一个N值,即 Y=X&N;
③ 输出等式 N3=X2&Y2 或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 是整除运算,其结果只取商的整数部分;
[例1.6] 求一元二次方程x2+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
&&&&&& d:=b*b-4*a*c;
&&&&&& x1:=(-b+sqrt(d))/(2*a);&&&&&&&&&&&&& {求方程的根}
&&&&&& x2:=(-b-sqrt(d))/(2*a);
&&&&&& Writeln('X1=',X1,'?':6,'X2=',X2);{输出结果}
&&&&&& Readln&&&&&&&&&&&&&&&&&&&&&&&&&&&& {等待输入一个回车键}
&本程序中的a,b,c均为常量;变量d是整数类型,而变量x1,x2则是实数类型,因为运算式中的Sqrt(d)开平方运算和(/)除法运算使结果为实数。Sqrt( ) 是开平方函数,是Pascal系统的一个标准函数。
习题1.1&& 模仿例题编程
1. 加法计算器:编程由键盘输入两个整数a和b,计算出它们的和并输出到屏幕上。
2. 某梯形的上底、下底和高分别为8,12,9,求该梯形的面积。
&&&& ( 梯形面积公式为 S=&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&
3. 求右图所示边长为5.6& 的正立方体表面积。
4. 已知图园柱体的高为12,底面园的半径为7,求园柱体表面积。
5. 计算某次考试语文、数学、英语和计算机等四科的总成绩与平均成绩。
(请用输入语句从键盘输入各科成绩分)
第二节& 顺序结构程序与基本数据类型
前面的简单程序已体现出处理问题步骤、思路的顺序关系,这就是顺序结构程序。
[例1.7]交换两个变量的值:由键盘输入两个正整数A和B,编程交换这两个变量的值。
解:交换两个变量的值,可以想象成交换两盒录音带(称为A和B)的内容,可以按以下步骤处理:
步骤①:拿一盒空白录音带C为过渡,先将A翻录至C;
步骤②:再将B翻录至A;
步骤③:最后将C翻录至B。
这样操作,可达到题目要求。
Pascal程序:
Program Exam17;
Var a,b,c&& :
& Write(&A,B=&);
& Readln(a,b);
& C:= A; &&&&&&&&&&&&&& {等价于步骤1}
& A := B;&&&&&&&&&&&&&&& {等价于步骤2}
& B := C;&&&&&&&&&&&&&&& {等价于步骤3}
& Writeln(A,B);
[例1.8] 分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。 求原先各人的钱数分别是多少?
解:设甲、乙、丙三人的钱数分别为A,B,C。用倒推(逆序)算法, 从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数:(在每个步骤中,各人钱数分别存在A、B、C中)
& 步骤①: A=8 B=8 C=8&&&&& & {这是最后结果的钱数,三人都一样多 }
& 步骤②: A=A/2 (=4)&&&& B=B/2 (=4)&&&& C=A+B+C(=16)&&&& { A,B未得到丙分给的钱时,只有结果数的一半;C应包含给A,B及本身数三者之和 }
& 步骤③: A=A/2 (=2)&&&& C=C/2 (=8)&&&& B=A+B+C(=14)&&&&& {A,C未得到乙分给的钱时,只有巳有数的一半;B应包含给A,C及本身数三者之和 }
& 步骤④: B=B/2 (=7)&&&& C=C/2 (=4)&&&& A=A+B+C(=13)&&&&
&C未得到甲分给的钱时,只有巳有数的一半;A应包含给B,C及本身数三者之和 }
& 步骤⑤: 输出A(=13)B(=7)C(=4){此时的A,B,C 就是三人原先的钱数 }
Pascal程序:
Program Exam18;
Var a,b,c: integer;
& a:=8; b:=8; c:=8;&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&& {对应于步骤①}
a:=a div 2; b:=b div 2; c:=a+b+c;&&&&&&&&&&&&&&& {对应于步骤②}
& a:=a div 2; c:=c div 2; b:=a+b+c;&&&&&&&&&&&&&&& {对应于步骤③}
& b:=b div 2; c:=c div 2; a:=a+b+c;&&&&&&&&&&&&&&& {对应于步骤④}
& Writeln('a=',a,'& ': 4,'b=',b,'& ': 4,'c=',c) ;  {输出}
细心观察,会发现本程序语句的顺序很关键。此例用反推顺序(逆序),按步骤正确推算出各变量的值。当然,有的问题可按正序步骤编程,这类程序都称为顺序程序。
本程序Writeln语句的输出项含有(& '& ' :& 4 ),这里的冒号用来指定该项显示所占宽度,此处是输出4个空格即(空格项占4格)。
[例1.9] 有鸡兔同笼,头30,脚 90,究竟笼中的鸡和兔各有多少只?
解:设鸡为J只,兔为T只,头为H,脚为F,则:
&&&&&&& J+T=30&&&&&&&&&&&&&&&& ①
2*J+4*T=90&&&& ②
解此题暂不必采用数学上直接解方程的办法,可采用&假设条件与逻辑推理&的办法:
&假设笼中30 个头全都是兔,那么都按每头4只脚计算,总脚数为(4*H),与实际脚数 ( F )之差为(4*H&F),如果这个差=0,则笼中全是兔(即鸡为0只);如果这个差值 &0,说明多计算了脚数,凡是鸡都多给算了两只脚,用它除以2就能得到鸡的只数,处理步骤为:
& ①& J=(4*H&F)/2&&&&&& {先用脚数差值除以2算出鸡的只数}
& ②& T=H&J&&&&&&&&&&&&&&& {再用总头数减鸡数算出免的只数}
按此方法,这两步运算必须注意先后顺序才会符合运算逻辑。
Pascal程序:
Program Exam16;
Const H=30;&&&&&&&&&&&&&&&& {常量说明 }
&&&& F=90;
Var J,T: byte;&&&&&&&&&&& {为字节类型的整数 }
&&J:=(4*H-F) div 2;&&& {整除运算 }
& Writeln ('J=',J,'& ': 6,'T= ',T ) ;
本程序中H,F为常量,变量J,T为byte类型,属于整数类型。
Pascal定义了五个标准整数类型,如下表所示:
Shortint(短整型)
Integer (整型)
带符号16位
Longint(长整型)
带符号32位
Byte (字节型)
Word  (字型)
无符号16位
&在前面程序中常用的数据类型除整数类型,还有实数类型。Pascal 还定义了五个标准实数类型,列表所示如下:
2.9&10-39~1.7&1038
1.5&10-45~3.4&1038
5.0&10-324~1.7&10308
1.9&10-&104932
-263+1~238-1
在Turbo Pascal 中实数的表示用科学记数法,可认为由三部分组成:
&&&&&&&&&&&&& # .& ## E +## 或& # . ## E -##
①& #.##表示有效数字; ② E表示以10为底的幂; ③ +##或-##是指数部分,+号可省略。
例如:&& 1.7E+38 可写成1.7E38 (等同于1. 7&1038 )。
在实数类型定义下,即使是整数,在程序执行时系统也将自动转换成科学记数形式,试请运行下面程序并注意观察运行结果:
Program Exam17;
Var x: real;&&&&&&&&&&&&&&&&&& {x为实数类型 }
& X:=180;&&&&&&&&&&&&&&&& {把整数180赋给实数类型变量X}
& Writeln ('x=',x) ;&     {输出的x自动表示成实数形式 }
1.已知△ABC中的三边长分别为25.76,74.03,59.31,求△ABC的面积。
&&& ( 计算公式: S=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 。 其中P =&&&&&&&&&&&&&&&& )
2.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个。求该棚内存有的自行车和三轮车各是多少辆?
3.甲、乙、丙三人分别有磁带36,48,64盒。先由甲把自己的磁带平均分为三份,分给乙、丙各一份,自己留下一份;接着是乙,最后是丙,都按甲的方法处理。编程输出甲、乙、丙在上述过程中各人的磁带数分别是多少? (输出所有的中间结果)
4.五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为32块。问各位好友原先的糖块数分别是多少?
第二章 分支程序
在程序设计中,许多问题是在一定条件下才选择某种处理方式的,这就需要用条件判断语句或情况选择语句进行处理。程序执行中将出现选择(分支),根据条件只选择执行部分语句,不一定都是按原顺序从头到尾地执行所有语句,这样的程序称为分支程序。
第一节& 条件语句与复合语句
[例2.1] 某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100 套的,每套定价为50元,否则每套价格为80元。编程由键盘输入订购套数,输出应付款的金额数。
解:设X为订购套数,Y为付款金额,则:
&& ① 输入X;
&& ② 判断 X 值;
&& ③ 根据判断结果选择符合条件的那种方法计算Y值;
&& ④ 输出计算结果。
Pascal程序:
Program Exam21;
Var x,y: integer;
& Write('X=') ;Readln(x) ;&&&&&&&&&&&&&&&&&& {& 输入X}
& if x &100 then y:=50*X& else& y:=80*X;&&&&& {条件判断与选择 }
& Writeln('y=',y) ;
程序中的 if 语句常称为条件语句,它的一般格式为:
&&& (1) if 条件 then 语句;
&&& (2) if 条件 then 语句1& else& 语句2;
IF 语句的功能是按条件在两种可能中选择其中一种。习惯上把if 后面的表达式称为条件,then 后面的语句称为真项,else 后面的语句称为假项。若条件成立(为真)就执行真项,然后执行if语句的后继语句;若条件不成立(为假)就跳过真项而执行假项,然后执行后继语句。而第一种格式只有真项,没有假项,当条件不成立(为假)就什么也不需做,直接往下去执行后继语句。
[例2.2] 读入三个不同的数,编程按由小到大的顺序排列打印出来。
解:设读入的三个数为a,b,c,为了把较小的数排在前面,可作如下处理:
&& ① 如果a>b就交换a、b的值,将较大的值换至后面;
&& ② 如果a>c就交换a、c的值,将较大的值换至后面;
&& ③ 如果b>c就交换b、c的值,将较大的值换至后面;
&& ④ 输出处理后的a,b,c。
&&& Pascal程序:
&&& Progranm& Exam22;
&&& Var a,b,c,t: Real;
&&&&&&& Write('Input a, b,c=');
&&&&&&& Readln(a,b,c);
&&&&&&& if a>b then
begin&&&&&&&&&&&&&&&&&&& {复合语句}
&&&&&&&&&&&& t:=a; a:=b; b:=t&&&&&& {交换a,b}
&&&&&&&&&& end;
&&&&&&& if a>c then
begin&&&&&&&&&&&&&&&&&&& {复合语句}
&&&&&&&&&&&& t:=a; a:=c; c:=t&&&&&&& {交换a,c}
&&&&&&&&&& end;
&&&&&&& if b>c then
begin&&&&&&&&&&&&&&&&&& {复合语句}
&&&&&&&&&&&&& t:=b; b:=c; c:=t&&&&&&&& {交换b,c}
&&&&&&&&&&& end;
&&&&&&& Writeln('a,b,c:',a:6, b:6, c:6);
&&&&&&& Readln
if 语句规定它的真项或假项位置上只能是一个基本语句,如果需要写一组语句,就应当使用复合语句。本程序中有三处用到复合语句。每个复合语句的范围是从Begin开始到与它相对应的End为止。复合语句的地位和一个基本语句相同;其一般格式为:
&&&&&&& Begin&
&&&&&&&&& 语句系列&
&&& &&&&End;
1.假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按每公斤1.5元计算邮费,如果超过1公斤时,其超出部分每公斤加收0.8元。请编程序计算邮件收费。
2.输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则输出Can't。(组成三角形的条件为:任意两边之和大于第三边)
3.输入一个三位数的整数,将数字位置重新排列,组成一个尽可大的三位数。例如:输入213,重新排列可得到尽可能大的三位数是321。
第二节& 情况语句与算术标准函数
如果有多种(两种或两种以上)选择,常用情况语句编程。
将前面[例2.1]改成用如下方法来处理。根据题意,付款计算可分为两种情况:
&&&&&&& ① Y=50*X&&& (X>100)
&&&&&&& ② Y=80*X&&& (X<=100)
显然,情况①与②的选择取决于X值。假设用N表示&情况值&,暂且先让N=2;
如果X>100则N=1;(此题中N的值只是1或2,且取决于X值)
Pascal 程序:
Program Exam21_1;
Var X,Y,N: integer;
& Write('X=') ;readln(x) ; n:=2;&&&& { 先让n=2 }
& if X>100 then n:=1;&&&&&&&&&&&&&&& {如果X>100则 n=1 }
& Case n& of&&&&&&&&&&&&&&&&&&&&&&&& { 关于情况处理 }
&&& 1: Y:=50*X;
&&& 2: Y:=80*X;
& Writeln('Y=',Y) ;
程序中的 Case─end 语句为情况语句,是多路分支控制,一般格式为:
&& Case 表达式 of
&& &&情况常量表1: 语句1;
&&&& 情况常量表2: 语句2;
&&&&&&& :&&&&&&& :
&&&& 情况常量表n: 语句n
执行情况语句时,先计算Case后面表达式的值,然后根据该值在情况常量表中的&对应安排&,选择其对应的语句执行,执行完所选择语句后就结束Case语句;如果常量表中没有一个与表达式值对应的语句,则什么也不做就结束本Case语句。
Case 语句的另一种应用格式为:
&&&& Case 表达式 of
&&&&&&& 情况常量表1: 语句1;
&&&&&& &情况常量表2: 语句2;
&&&&&&&&&& :&&&&&&& :
&&&&&&& 情况常量表n: 语句n;
&&&&&&& else& 语句 n+1
&&&& end;
这种格式的前面部分是相同的,所不同的是:如果常量表中没有一个与表达式值对应的语句,则执行与else对应的语句,然后结束Case语句。
[例2.2] 对某产品征收税金,在产值1万元以上征收税5%;在1万元以下但在5000元
以上的征收税3%;在5000元以下但在1000元以上征收税2%;1000元以下的免收税。编程计算该产品的收税金额。
解:设x为产值,tax为税金,用P表示情况常量各值,以题意中每1000元为情况分界:
&&&&&& P=0:&&&&&&&&&&&&&&&& tax=0&&&&&&& (x&1000 )
&&&&&& P=1,2,3,4:&&&&&&& tax=x*0.02&&& (1000&=x&5000 )
&&&&&& P=5,6,7,8,9:&&&& tax=x*0.03&&& (5000&X&=10000 )
&&&&&& P=10:&&&&&&&&&&&&&&& tax=x*0.05&&& (x& 10000 )
&&& 这里的P是&情况&值,用产值x除以1000的整数值作为P,如果P&10也归入P=10的情况。Pascal语言用P=trunc(x/1000)取整计算,
Pascal程序:
Program Exam22;
Var& x,p :& integer;
&&& Tax& : real;
& Write('Number=') ; readln(x) ;
& P:=trunc(x/1000) ;&
if P>9 then P:=10;
& Case& P& of
&&&& 0&&&&&&&&&&&&&&&&&& :& tax:=0;
&&&& 1,2,3,4&&&&&&&&&& :& tax:=x*0.2;
&&&& 5,6,7,8,9&&&&&&& :& tax:=x*0.3;
&&&& 10&&&&&&&&&&&&&&&& :& tax:=x*0.5
& Writeln('tt=',tt:5:2) ;
情况表达式的计算必须考虑到&全部&情况,不要有遗漏。如果情况常量表的&值&在某范围内是连续的,可将常量表写成:
&&&&&&&&&&&&&&&&&&&&&&&& n1.. n2:语句;
因此,上面程序中的情况常量表可以写成如下程序中表示形式:
Program Exam22_1;
Var x,p: integer;
&& tax: real;
& Write('Number=') ; readln(x) ;
& P:=trunc(x/1000) ;&
if P>9 then P:=10;
& Case& P& of
&&& 0&&&&&& : tax:=0;
&&& 1..4&& : tax:=x*0.2;& { 从1至4作为同一情况处理 }
&&& 5..9&& : tax:=x*0.3;& { 从5至9作为同一情况处理 }
&&& 10&&&& : tax:=x*0.5
& Writeln('tt=',tt:5:2) ;
程序中的trunc(x)为取整函数,是Pascal的算术标准函数之一。Pascal常用的算术标准函数有19个:
&&& (1) abs(x) 求x的绝对值(|x|);
&&& (2) exp(x) 求ex的值; (e为无理数2.71828&)
&&& (3) frac(x)求x的小数部分;
&&& (4) int(x) 求x的整数部分(不舍入,函数值为实型);
&&& (5) ln(x)& 求以e为底的x的对数(log ex& );
&&& (6) odd(x) 判断x的奇偶数(当x为奇数时odd(x)值为true,否则为false);
&&& (7) ord(x) 求x的序号,结果为整型(x为有序类型量);
&&& (8) pi&&& &值(3.7932&);
&&& (9) pred (x) 求x(有序类型)的前趋值;
&&& (10) succ(x) 求x(有序类型)的后继值;
&&& (11) random 随机函数,产生0~1的随机值;
&&& (12) random(n)产生0~n的随机数(n为word类型,先执行randomize, 才能得到随机整数);
&&& (13) round(x) 求x的四舍五入整数;
&&& (14) trunc(x) 求x的整数部分(截掉小数部分,结果为整型);
&&& (15) sqr(x) 求x的平方值(x2 );
&&& (16) sqrt(x) 求x的开平方根值(&&&&&&&& );
(17) sin(x) 求x的正弦函数(x为弧度);
(18) cox(x) 求x的余弦函数(x为弧度);
(19) arctan(x) 正切的反三角函数(x为数值);
1.运输公司计算运费时,距离(S)越长,每公里运费越低,标准如下:
&&&&& 如果S<250公里;运费为标准运价的100%&&&&&&&&&&&&&&&
&&&&& 如果250公里<=S<500公里,运费为标准运价的98%;&&&&
&&&&& 如果500公里<=S<1000公里,运费为标准运价的95%;&&&
&&&&& 如果1000公里<=S<2000公里,运费为标准运价的92%;&&
&&&&& 如果2000公里<=S<3000公里,运费为标准运价的90%;&&
&&&&& 如果S=>3000公里,运费为标准运价的85%;。请编计算运费的程序。
2. 输入考试成绩,如果获85分以上为 A等,获60分~84分为B等,60分以下为C等,编程输出考试等级。
3. 某车间按工人加工零件的数量发放奖金,奖金分为五个等级:每月加工零件数N & 100者奖金为10元;100 & = N & 110者奖金为30元;110 & = N &120 者奖金为50元;120 & = N &130 者奖金为70元;N & 130者为80元。
请编程,由键盘输入加工零件数量,显示应发奖金数。
阅读(...) 评论() &}

我要回帖

更多关于 pascal下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信