信息学编程语言教程二:顺序结构程序与基本数据类型_杯赛竞赛-查字典奥数网
 
请输入您要查询的关键词

信息学编程语言教程二:顺序结构程序与基本数据类型

2012-12-13 15:24:15     标签:信息学

查字典合肥奥数网讯:青少年信息学编程语言教程二:顺序结构程序与基本数据类型。

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

前期回顾:青少年信息学竞赛语言教程一:简单程序

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

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

步骤①:拿一盒空白录音带C为过渡,先将A翻录至C;

步骤②:再将B翻录至A;

步骤③:最后将C翻录至B。

这样操作,可达到题目要求。

Pascal程序:

ProgramExam17;

Vara,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=8B=8C=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程序:

ProgramExam18;

Vara,b,c:integer;

Begin

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

a:=adiv2;b:=bdiv2;c:=a+b+c;{对应于步骤②}

a:=adiv2;c:=cdiv2;b:=a+b+c;{对应于步骤③}

b:=bdiv2;c:=cdiv2;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程序:

ProgramExam16;

ConstH=30;{常量说明}

F=90;

VarJ,T:byte;{为字节类型的整数}

Begin

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

T:=H-J

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

Readln

End.

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

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

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

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

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

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

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

ProgramExam17;

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

Begin

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

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

Readln

End.

更多阅读,请参加查字典合肥奥数网“杯赛竞赛”频道。

》》“信息学竞赛”

信息学奥赛语言教程PASCAL函数表

信息学竞赛可能用到的c++语法

信息学奥林匹克竞赛与编程语言的关系

全国青少年信息学奥林匹克竞赛规则

点击显示
上一篇:信息学竞赛辅导资料Pascal语言基础知识(一)
下一篇:青少年信息学竞赛语言教程一:简单程序
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关文章
热门文章
最新文章
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •   信息学编程语言教程二:顺序结构程序与基本数据类型_杯赛竞赛-查字典奥数网
     
    请输入您要查询的关键词

    信息学编程语言教程二:顺序结构程序与基本数据类型

    2012-12-13 15:24:15     标签:信息学

    查字典合肥奥数网讯:青少年信息学编程语言教程二:顺序结构程序与基本数据类型。

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

    前期回顾:青少年信息学竞赛语言教程一:简单程序

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

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

    步骤①:拿一盒空白录音带C为过渡,先将A翻录至C;

    步骤②:再将B翻录至A;

    步骤③:最后将C翻录至B。

    这样操作,可达到题目要求。

    Pascal程序:

    ProgramExam17;

    Vara,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=8B=8C=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程序:

    ProgramExam18;

    Vara,b,c:integer;

    Begin

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

    a:=adiv2;b:=bdiv2;c:=a+b+c;{对应于步骤②}

    a:=adiv2;c:=cdiv2;b:=a+b+c;{对应于步骤③}

    b:=bdiv2;c:=cdiv2;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程序:

    ProgramExam16;

    ConstH=30;{常量说明}

    F=90;

    VarJ,T:byte;{为字节类型的整数}

    Begin

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

    T:=H-J

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

    Readln

    End.

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

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

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

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

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

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

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

    ProgramExam17;

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

    Begin

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

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

    Readln

    End.

    更多阅读,请参加查字典合肥奥数网“杯赛竞赛”频道。

    》》“信息学竞赛”

    信息学奥赛语言教程PASCAL函数表

    信息学竞赛可能用到的c++语法

    信息学奥林匹克竞赛与编程语言的关系

    全国青少年信息学奥林匹克竞赛规则

    点击显示
    上一篇:信息学竞赛辅导资料Pascal语言基础知识(一)
    下一篇:青少年信息学竞赛语言教程一:简单程序
    推荐文章
    猜你喜欢
    附近的人在看
    推荐阅读
    拓展阅读
    相关文章
    热门文章
    最新文章
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •