中区中学信息学奥林匹克竞赛培训教程-pascal语言和程序设计基础(编辑修改稿)内容摘要:
不及格及格优秀 要求 :假设输入的分数为 [0,100]之间的整数。 Program JudgeScore2。 var x:real。 begin read(x)。 {输入一个分数 } case x of 0..59:{ 0 60x } writeln(„不及格 ‟。 60..89:{ 60 90x } writeln(„及格 ‟)。 90..100。 {90 100x } writeln(„优秀 ‟)。 else writeln(„错误的分数 ‟)。 end。 {case x of} end. 例:根据学生的成绩给予相应的等级,对应关系如下: 90 ——100 A 80 ——89 B 60 ——79 C 60以下 D 中学学科网学海泛舟系列资料 :COM 版权所有 @中学学科网 11 program chengji。 var s:real。 ch:char。 begin write(39。 input the score: 39。 )。 readln(s)。 if(s=0)and(s=100)then case s div 10 of 10,9:ch:=39。 A39。 8:ch:=39。 B39。 7,6:=39。 C39。 else ch:=39。 D39。 end。 writeln(s,39。 39。 ,ch)。 end. 练习: 我们把字母作如下的分类:大写字母 :‟A‟..‟Z‟;小写字母 :‟a‟..‟z‟。 数字: ‟0‟..‟9‟;其他字母,编写一个程序,根据上述分类的方法,输入一个字母,报告该字母所属的类型。 某超市为了促销,规定:购物不足 50 元的按原价付款,超过 50 不足 100 的按九折付款,超过 100 元的,超过部分按八折付款。 编一程序完成超市的自动计费的工作。 第四节 for 循环结构 程序设计时我们经常要做一些重复的任务通过反复的执行某一个动作来完成任务,编写这一类程序我们使用循环 结构来实现。 如计算 1+2+3+….+100。 Pascal 中循环结构通过使用 For、 While、 Repeat 三种语句来实现。 For 语句是形式最简单的循环语句。 例题 1:输入正整数 N,计算 1Ni i 分析: 1Ni i = 1+2+3+…+N, 因此我们必需重复的执行 S:=S+i,其中 S 代表和, S=1 {i=1} S=1+2 {i=2} S=1+2+3 {i=3} S=1+2+3+4 {i=4} …. S=1+2+3+4+…+N {i=N} i 从 1 变化到 N,计算前 I项的和: 1+2+3+…+I ,写成 Pascal 代码如下: For i:=1 to N DO S:=S+i。 {i 从 1 变化到 N 重复执行 S:=S+i} 完整的程序如下: Program Example1_4 Var N,I,S:integer。 Begin Write(„输入正整数 N:‟)。 Readln(N)。 S:=0。 For I:=0 to n do S:=S+I。 Writeln(„1+2+3+…+‟,n,‟=‟,s)。 End. FOR 循环有两种形式: 升序形式: for 控制变量 :=初值 to 终值 do 语句 中学学科网学海泛舟系列资料 :COM 版权所有 @中学学科网 12 降序形式: for 控制变量 :=初值 downto 终值 do 语句 for 语句功能描述: 虽然 for 循环形式简单,但是执行的机制却很复杂。 其基本过程如下: 1. 计算初值并记忆 2. 判断初值是否超出终值、如果超过则执行步骤 7,否则执行步骤 3 3. 把初值赋给控制变量 4. 执行 do 后面的语句(循环体 ) 5. 判断控制变量的值 是否达道终值,如果是则执行步骤 6,否则执行步骤 7 6. 控制变量取下一个值 (升序取后继,降序取前驱 ) 7. (循环结束 )执行下一语句 . 例题:编写程序输出序号从 32 到 126 的 ASCII字符与对应代 码之间的对应关系。 每行输出 5个字符,输出结果如下如所示。 (Example4_2) program example4_2。 var i, j: byte。 begin for i := 32 to 126 do begin if (j mod 5 = 0) then writeln。 write(i: 5, chr(i): 2)。 j := j + 1。 end。 end. 程序说明: 标准函数 chr(i)可以得到代码为 i 的字符。 j mod 5 求 j 模 5 的余数。 语句 if (j mod 5 = 0) then writeln。 用于控制换行,每行写 5 个字符的对应关系。 语句 write(i: 5, chr(i): 2)。 用于格式化输出结果。 编程完成下列计算: 2 2 2 21 1 2 ...Ni iN 11 1 ( 1)1 ......23 nn 把数码 1, 2, 3, 4, … , 9分成 3 组,每组构成一个 3 位数,使这 3个 3 位数恰好成 1:2: 3,该怎样分。 求出所有的解答来。 (如: 192, 384, 576 就是一组解答) 求出所有的三位数 xyz ,它除以 11 所得余数等于它的三个数字的平方和。 第五节 while、 repeat 循环结构 While 语 句是另外一种实现循环的语句,一般形式如下: While 条件 do 语句 While 循环的执行过程如下: 1. 判断条件是否成立,条件成立时执行步骤 2,否则执行步骤 4 2. 执行 do 后面的语句(循环体 ) 3. 返回步骤 1 中学学科网学海泛舟系列资料 :COM 版权所有 @中学学科网 13 4. 结束循环,执行下一语句 注意:一定要有使条件取假 (False)的时候,否则会出现死循环。 例题:从键盘输入一批学生考试数据,统计这些数据中大于 80 的数的个数。 分析:因为学生的人数没有确定,因此不方便用 for 循环来完成此项工作,但是用 while 循环比较容易实现。 (example4_3) while score=0 do 输入一个学生成绩→ score。 计算总分; Pascal 代码: while score = 0 do begin readln(score)。 total := total + score。 end。 完整的程序代码: program example4_3。 var score: integer。 total: integer。 c: char。 begin writeln(39。 输入学生分数: 39。 )。 readln(score)。 total:=0。 while score = 0 do begin readln(score)。 total := total + score。 end。 writeln(39。 总分为: 39。 ,total)。 read(c)。 end. Repeat语句与 while语句基本类类似,只是 while 先判断条件, reapeat语句先执行循环体然后再判断。 Repeat 语句。 {循环体部分 } Until 条件。 {循环结束条件 } 执行过程如下: 1. 执行循环体 2. 判断条件,如果布满足重复 1,否则 执行步骤 3 3. 结束循环,执行下一语句 例题:改写 Example4_3 程序使用 Repeat 循环语句实现。 (Example4_4) program example4_4。 var score: integer。 total: integer。 c: char。 begin writeln(39。 输入学生分数: 39。 )。 total := 0。 repeat readln(score)。 total := total + score。 until score 0。 中学学科网学海泛舟系列资料 :COM 版权所有 @中学学科网 14 writeln(39。 总分为: 39。 , total)。 read(c)。 end. 练习: 计算下列式子的值: ( 1) 1+3+5+…+99 ( 2) 1+2+4+8+…+128+256+512+1024 ( 3) 1+(1+2)+(1+2+3)+…+(1+2+3+4+…+N) 有一分数序列: 1 3 5 8 1 3 2 1, , , , , , .. .. ..2 2 3 5 8 1 3求出这个数列的前 20项的和。 求水仙花数。 所谓水仙花数,是指一个三位数 abc ,如果满足 3 3 3a b c abc ,则abc 是水仙花数。 输入一个整数,计算它各位上数字的和。 (注意:是任意位的整数) 输入一整数 A, 判断它是否质数。 (提示:若从 2 到 A 的平方根的范围内,没有一个数能整除 A,则 A是质数。 ) 求两个数的最小公倍数和最大公约数。 (提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。 公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。 ) 编写一个译码程序,把一个英语句子译成数字代码。 译码规则是以数字 1代替字母 A,数字 2 代替字母 B, …… , 26 代替字母 Z,如遇空格则打印一个星号 „*‟,英文句子以 „.„结束。 “百钱买百鸡 ”是我国古代的著名数学题。 题目这样描述: 3文钱可以买 1 只公鸡, 2 文钱 可以买一只母鸡, 1 文钱可以买 3 只小鸡。 用 100 文钱买 100 只鸡,那么各有公鸡、母鸡、小鸡多少只。 与之相似,有 鸡兔同笼 问题。 输入一个正整数 N,把它分解成质因子相乘的形式。 如: 36=1 2 2 3 3; 19=119(提示:设因子为 I,从 2开始到 N,让 N 重复被 I 除,如果能整除,则用商取代 N,I 为一个因子;如果不能整除,再将 I 增大,继续以上操作,直到 I 等于 N。 ) 编程实现:求 . . . . . .nns a a a a a a a a a a a a 之值,其中 a是一个数字。 例如:2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (当 n=5时), n由键盘输入。 1 一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如: 6的因 子为 3,而 6= 1+ 2+ 3,因此 6是“完数”。 编程序找出 1000以内的所有完数。 1 编一程序,输入 a, b, c, d, e, f,然后解出方程组aX bY cdX eY f 的解。 第六节 数据类型 简单数据类型 Pascal 语言基本数据类型由: integer(longint,shortint,byte),real,char,。 自定义数据类型: 我们可以 在基本数据类型的基础上定义新的数据类型,类型定义的保留字为“ Type” ,格式为: TYPE 类型标识符 =数据类型 如: Type MyLong=Longint。 枚举类型: 中学学科网学海泛舟系列资料 :COM 版权所有 @中学学科网 15 “枚举”的意思就是把所需要的对象都一个一个的列举出来。 比方说星期是一个只有 7 个元素的数据,因此我们可以定义一种数据类型 TWeekDay 代表星期,如果一个变量定义为TWeekDay 类型,那么他的取值范围就是 Sunday..Saturday,另外颜色 TColor也一样。 习惯上我们在 自定义类型名称前加上“ T”,如 TColor,TWeekDay,而且单词以大写字母开始。 Type TWeekDay=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday)。 TColor=(Red,Yellow,Blue,White,Black)。 枚举变量的第一个代表 0,第二个 代表 1,以此类推,如上面定义的 TweekDay 类型,Sunday=0, Monday=1, … , Saturday=6。 例题:输入今天的日期数字: 0= Sunday,。中区中学信息学奥林匹克竞赛培训教程-pascal语言和程序设计基础(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。