第一章 简单程序

无论做任何事情,都要有一定的方式方法与处理步骤。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。在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来表示,则这个问题可分为以下几步处理:

①从键盘输入自行车的数目a;

②用公式  m=300*a  计算总售价;

③输出计算结果。

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.                                        

   图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                     {等待输入回车键}                  

  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语句输入数据。第三种格式不需输入数据,只需按入一个回车键。

 

[例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                             {等待输入一个回车键}

     End.

 本程序中的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   : integer;

Begin

  Write(‘A,B=’);

  Readln(a,b);

  C:= A;                {等价于步骤1}

  A := B;                {等价于步骤2}

  B := C;                {等价于步骤3}

  Writeln(A,B);

End.

[例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;

Begin

  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) ;  {输出}

  Readln

End.

细心观察,会发现本程序语句的顺序很关键。此例用反推顺序(逆序),按步骤正确推算出各变量的值。当然,有的问题可按正序步骤编程,这类程序都称为顺序程序。

本程序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;            {为字节类型的整数 }

Begin

  J:=(4*H-F) div 2;    {整除运算 }

  T:=H-J

  Writeln (\’J=\’,J,\’  \’: 6,\’T= \’,T ) ;

  Readln

End.

本程序中H,F为常量,变量J,T为byte类型,属于整数类型。

Pascal定义了五个标准整数类型,如下表所示:

类型

取值范围

占字节数

格式

Shortint(短整型)

-128..127

1

带符号8位

Integer (整型)

-32768..32767

2

带符号16位

Longint(长整型)

-2147483648..2147483647

4

带符号32位

Byte (字节型)

0..255

1

无符号8位

Word  (字型)

0..65535

2

无符号16位

 在前面程序中常用的数据类型除整数类型,还有实数类型。Pascal 还定义了五个标准实数类型,列表所示如下:

类型

取值范围

占字节数

有效数字

Real

2.9×10-39~1.7×1038

6

7~8位

Single

1.5×10-45~3.4×1038

4

11~12位

Double

5.0×10-324~1.7×10308

8

15~16位

Extended

1.9×10-4951~1.1×104932

10

19~20位

Comp

-263+1~238-1

8

19~20位

 

在Turbo Pascal 中实数的表示用科学记数法,可认为由三部分组成:

              # .  ## E +## 或  # . ## E -##

①  #.##表示有效数字; ② E表示以10为底的幂; ③ +##或-##是指数部分,+号可省略。

例如:   1.7E+38 可写成1.7E38 (等同于1. 7×1038 )。

在实数类型定义下,即使是整数,在程序执行时系统也将自动转换成科学记数形式,试请运行下面程序并注意观察运行结果:

Program Exam17;

Var x: real;                   {x为实数类型 }

Begin

  X:=180;                 {把整数180赋给实数类型变量X}

  Writeln (\’x=\’,x) ;      {输出的x自动表示成实数形式 }

  Readln

End.

习题1. 2

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;

Begin

  Write(\’X=\’) ;Readln(x) ;                   {  输入X}

  if x >100 then y:=50*X  else  y:=80*X;      {条件判断与选择 }

  Writeln(\’y=\’,y) ;

  Readln

End.

程序中的 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;

    Begin

        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

    End.

if 语句规定它的真项或假项位置上只能是一个基本语句,如果需要写一组语句,就应当使用复合语句。本程序中有三处用到复合语句。每个复合语句的范围是从Begin开始到与它相对应的End为止。复合语句的地位和一个基本语句相同;其一般格式为:

        Begin 

          语句系列 

        End;

 

习题2. 1

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;

Begin

  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;

  end;

  Writeln(\’Y=\’,Y) ;

  Readln

End.

程序中的 Case─end 语句为情况语句,是多路分支控制,一般格式为:

   Case 表达式 of

     情况常量表1: 语句1;

     情况常量表2: 语句2;

        :        :

     情况常量表n: 语句n

    end;

 

执行情况语句时,先计算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;

Begin

  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

  end;

  Writeln(\’tt=\’,tt:5:2) ;

  Readln

End.

情况表达式的计算必须考虑到“全部”情况,不要有遗漏。如果情况常量表的“值”在某范围内是连续的,可将常量表写成:

                         n1.. n2:语句;

因此,上面程序中的情况常量表可以写成如下程序中表示形式:

Program Exam22_1;

Var x,p: integer;

   tax: real;

Begin

  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

  end;

  Writeln(\’tt=\’,tt:5:2) ;

  Readln

End.

程序中的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.1415926535897932…);

    (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为数值);

 

习题2.2

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元。

请编程,由键盘输入加工零件数量,显示应发奖金数。

版权声明:本文为shally原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shally/articles/2068486.html