2022年顺序结构程序 3.pdf
第二章顺序结构程序顺序结构前面的简单程序已体现出处理问题步骤、 思路的顺序关系,这就是顺序结构程序。例 1.6交换两个变量的值:由键盘输入两个正整数A和 B,编程交换这两个变量的值。解:交换两个变量的值,可以想象成交换两盒录音带(称为A和 B)的内容,可以按以下步骤处理:步骤:拿一盒空白录音带C为过渡,先将 A翻录至 C ;步骤:再将 B 翻录至 A;步骤:最后将 C翻录至 B。这样操作,可达到题目要求。Pascal 程序:Program Exam16;Var a,b,c: integer;BeginWrite( A,B=);Readln(a,b);C:= A;等价于步骤 1A := B;等价于步骤 2B := C;等价于步骤 3Writeln(A,B);End. 例 1.7分钱游戏。甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - 甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?解: 设甲、乙、丙三人的钱数分别为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 Exam17 ;Var a,b,c:integer ;Begina:=8; b:=8; c:=8;对应于步骤名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - a:=a div2; b:=b div2; c:=a+b+c;对应于步骤a:=a div2; c:=cdiv2; b:=a+b+c;对应于步骤b:=b div2; c:=cdiv2; a:=a+b+c;对应于步骤Writeln(a=,a,:4,b= ,b,:4,c= ,c);输出ReadlnEnd.细心观察, 会发现本程序语句的顺序很关键。此例用反推顺序 (逆序),按步骤正确推算出各变量的值。 当然,有的问题可按正序步骤编程, 这类程序都称为顺序程序。本程序 Writeln语句的输出项含有(:4 ),这里的冒号用来指定该项显示所占宽度,此处是输出4 个空格即 (空格项占 4 格)。 例 1.8有鸡兔同笼,头 30,脚 90,究竟笼中的鸡和兔各有多少只?解: 设鸡为 J 只,兔为 T 只,头为 H ,脚为 F,则:J+T=302*J+4*T=90解此题暂不必采用数学上直接解方程的办法,可采用“假设条件与逻辑推理”的办法:假设笼中 30 个头全都是兔,那么都按每头只脚计算,总脚数为(4*H) ,与实际脚数( F )之差为(4*HF),如果这个差 =0,则笼中全是兔 (即鸡为 0 只);如果这个差值0,说明多计算了脚数,凡是鸡都多给算了两只脚,用它除以2就能得到鸡的只数,处理步骤为:J=(4*HF)/2先用脚数差值除以2 算出鸡的只数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - T=H J再用总头数减鸡数算出免的只数按此方法,这两步运算必须注意先后顺序才会符合运算逻辑。Pascal 程序:Program Exam18 ;Const H=30 ;常量说明F=90;Var J,T: byte ;为字节类型的整数BeginJ:=(4*H-F)div2;整除运算T:=H-JWriteln(J=,J,:6,T= ,T) ;ReadlnEnd.本程序中 H ,F 为常量,变量 J,T 为 byte 类型,属于整数类型。上机实践1. 完成例 1.6。交换两个变量的值: 由键盘输入两个正整数A和 B,编程交换这两个变量的值完成例 1.7。分钱游戏 : 甲、乙、丙三人共有24元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。求原先各人的钱数分别是多少?完成例 1.8。鸡兔同笼 : 有鸡兔同笼,头 30,脚 90,究竟笼中的鸡和兔各有多少只?2. 输入一个字符,求其序号(ord)、前导( pred)、后继( succ)3. 输入三个字符,然后按输入字符次序输出这三个字符(一行),再输出每个字符的序号(一行,求字符序号,用ord 函数,如 ord(a) ) ,最后按与输入字符相反的次序输出这三个字符(一行) 。4. 输入一个三位整数,将它反向输出。例如输入127,输出应为 721。5. 从键盘上读入小写的 “pascal ” ,利用 chr() 和 ord() ,输出大写的“PASCAL ” 。6. 从键盘上读入长方形的边长a,b( 实型),计算它的面积和周长,并分两行输名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -