湿地保护 > > 学习 > 正文

第二节  顺序结构程序与基本数据类型

作者:孟子后生 2012/12/3 10:41:16
心情:开心日期:2012-12-03 星期一天气:地点:学校

前面的简单程序已体现出处理问题步骤、思路的顺序关系,这就是顺序结构程序。

[例1.7]交换两个变量的值:由键盘输入两个正整数AB,编程交换这两个变量的值。

解:交换两个变量的值,可以想象成交换两盒录音带(称为AB)的内容,可以按以下步骤处理:

步骤①:拿一盒空白录音带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元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?

:设甲、乙、丙三人的钱数分别为ABC。用倒推(逆序)算法,从最后结果入手,按反相顺序,分步骤推算出每次各人当时的钱数:(在每个步骤中,各人钱数分别存在ABC中)

 步骤①: A=8 B=8 C=8        {这是最后结果的钱数,三人都一样多

 步骤②: A=A/2 (=4)     B=B/2 (=4)     C=A B C(=16)     { AB未得到丙分给的钱时,只有结果数的一半;C应包含给AB及本身数三者之和

 步骤③: A=A/2 (=2)     C=C/2 (=8)     B=A B C(=14)      {AC未得到乙分给的钱时,只有巳有数的一半;B应包含给AC及本身数三者之和

 步骤④: B=B/2 (=7)     C=C/2 (=4)     A=A B C(=13)    

 C未得到甲分给的钱时,只有巳有数的一半;A应包含给BC及本身数三者之和

 步骤⑤:输出A=13B=7C=4此时的ABC就是三人原先的钱数

Pascal程序:

Program Exam18

Var abc: integer

Begin

  a:=8b:=8c:=8                                         {对应于步骤①

a:=a div 2b:=b div 2c:=a b c                {对应于步骤②

  a:=a div 2c:=c div 2b:=a b c                {对应于步骤③

  b:=b div 2c:=c div 2a:=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*HF),如果这个差=0,则笼中全是兔(即鸡为0只);如果这个差值>0,说明多计算了脚数,凡是鸡都多给算了两只脚,用它除以2就能得到鸡的只数,处理步骤为:

   J=(4*HF)/2       {先用脚数差值除以2算出鸡的只数

   T=HJ                {再用总头数减鸡数算出免的只数

按此方法,这两步运算必须注意先后顺序才会符合运算逻辑。

Pascal程序:

Program Exam16

Const H=30                 {常量说明

     F=90

Var JT: byte            {为字节类型的整数

Begin

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

  T:=H-J

  Writeln ('J='J'  ': 6'T= 'T )

  Readln

End.

本程序中HF为常量,变量JTbyte类型,属于整数类型。

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.7674.0359.31,求△ABC的面积。

    (计算公式: S=                                         其中P =                 )

2.某车棚存有自行车和三轮车共65辆,它们的轮子数合计为150个。求该棚内存有的自行车和三轮车各是多少辆?

3.甲、乙、丙三人分别有磁带364864盒。先由甲把自己的磁带平均分为三份,分给乙、丙各一份,自己留下一份;接着是乙,最后是丙,都按甲的方法处理。编程输出甲、乙、丙在上述过程中各人的磁带数分别是多少? (输出所有的中间结果)

4.五位好朋友相聚。第一位朋友带来了很多糖块赠送给各位朋友,使每人的糖块在各自原有的基础上翻了一倍;接着第二位好友也同样向每人赠送糖块,他同样使每人的糖块在各人已有的数量上翻了一倍;第三、第四、第五位好友都照此办理。经过这样的赠送之后,每人的糖块恰好都为32块。问各位好友原先的糖块数分别是多少?
 
 
阅读 1873
推荐
网友评论

发表

我也说两句
E-File帐号:用户名: 密码: [注册]
评论:(内容不能超过500字。)

*评论内容将在30分钟以后显示!
版权声明:
1.依据《服务条款》,本网页发布的原创作品,版权归发布者(即注册用户)所有;本网页发布的转载作品,由发布者按照互联网精神进行分享,遵守相关法律法规,无商业获利行为,无版权纠纷。
2.本网页是第三方信息存储空间,阿酷公司是网络服务提供者,服务对象为注册用户。该项服务免费,阿酷公司不向注册用户收取任何费用。
  名称:阿酷(北京)科技发展有限公司
  联系人:李女士,QQ468780427
  网络地址:www.arkoo.com
3.本网页参与各方的所有行为,完全遵守《信息网络传播权保护条例》。如有侵权行为,请权利人通知阿酷公司,阿酷公司将根据本条例第二十二条规定删除侵权作品。

 

更多精彩在首页, 首页