if 条件2 then ?? else ??; end; 〖例题分析〗
1、输入两个数a,b,输出较大的数。 program tt;
var a,b:integer; begin
write('please input a,b:'); readln(a,b);
if a>b then writeln(a) else writeln(b); end.
条件语句练习题:
1、从键盘上读入长方形的边长a,b,计算它的面积和周长,输出。
2、 从键盘读入一个数,判断它的正负。是正数,则输出\,是负数,则输出\。 3、 输入两个数a,b,输出较大数的平方值。
4、 铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。
5、 某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。 6、 输入a,b,c三个不同的数,将它们按由小到大的顺序输出。
7、 当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。(提示:可以利用DIV运算来使程序更简明)
六.分情况(CASE)语句
〖语法分析〗
分情况语句适用于对一个条件的多种情况的响应。 格式:
case 表达式 of 值表1:语句1; 值表2:语句2; ??
值表n:语句n; else 语句n+1
end;
case语句在使用时有几点要注意:
1. end与case对应;值表与语句之间用“:”分隔;else与语句之间不用分隔符。 2. 表达式必须是有序类型(整型、字符型、布尔型、枚举型、子界型)
3.值表必须是一些由逗号分开的常量,其类型与表达式的类型一致
- 25 -
4. 语句可以是多个语句,但必须用语句括号(begin??end)括起 5. case语句也可以嵌套
例1: 某全自动加油站a,b,c三种汽油的单价(元/kg)分别是1.50、1.35和1.18,也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。编一个程序,用户输入加油量、汽油品种和服务类型(f-自动,m-自己,e-协助),然后计算应付款。 program pcase1; var
oil,help:char; kg,total:real; begin
write('Enter the amount in kilograms(kg):'); readln(kg); write('Which type of the gasoline(a,b,c):'); readln(oil); wirte('Which type for service(f,m,e):'); readln(help); case oil of
'a': total:=1.50*kg; 'b': total:=1.35*kg; 'c': total:=1.18*kg;
else writeln('Input Error!') end;
{——————处理汽油的类型} case help of 'f':;
'm': total:=total*(1-0.05); 'e': total:=total*(1-0.10); else writeln('Input Error!') end;
{——————处理服务类型} writeln;
writeln('Total is ',total:10:2); end.
例2:从键盘上读入年和月,输出该月有多少天。 program pcase2; var
year,month,day:integer; runnian:boolean; begin
write('Enter year and month:'); readln(year,month); case month of
1,3,5,7,8,10,12: day:=31;
- 26 -
4,6,9,11: day:=30;{————以上处理31天和30天的情况} 2:begin
runnian:=(year mod 400=0) or ((year mod 4=0) and (year mod 100<>0)); case runnian of true: day:=29; false: day:=28; end;
end; {————以上处理2月的情况:闰年29天,平年28天} end; end. 练习题:
1、 编程模拟剪刀、石头、布游戏:用S表示剪刀,用R表示石头,用P表示布。规则是:
剪刀剪布,石头砸剪刀,布包石头。游戏者分别把自己的选择输入,计算机给出结果。
七.各种循环语句的运用
〖语法分析〗
在PASCAL语言中,有3种循环语句。所谓循环,就是不断地重复某一段程序段。这三种语句分别是FOR,REPEAT-UNTIL,WHILE。 1、 FOR循环语句
FOR语句构成的循环有递增和递减循环两种形式: 1. 递增型FOR循环。 FOR 循环控制变量:=循环初值 TO 循环终值 DO 循环的语句(或语段) 例: FOR I:=5 TO 10 DO WRITELN (I);
输出的结果为: 5 6 7 8 9 10 即循环一共执行了6次 如果要重复多个语句,一定要用BEGIN-END形式: 例:
FOR I:=1 TO 10 DO BEGIN
WRITELN (I); WRITELN (10-I); END;
2. 递减型FOR循环 FOR 循环控制变量:=循环初值 DOWNTO 循环终值 DO 循环语句 递减型FOR循环与递增型FOR循环基本相同,只是循环控制变量每次递减。 3. FOR循环的几点注意内容:
(1)循环控制变量必须是顺序类型的变量。所谓顺序类型的变量,就是指整型,字符型,枚举型,子界型,不允许是实型。
(2)不允许在循环体内再对循环控制变量赋值。 例如:
A:=10;B:=50;
FOR K:=A TO B DO BEGIN
- 27 -
K:=K+1;{这一句是错误的!!!!!!!!} WRITELN (K); END;
(3)当循环初值或循环终值中包含变量时,允许在循环体内改变这些变量的值,但并不改变原定的循环次数。 例:
A:=1;B:=10;
FOR I:=A TO B DO BEGIN
A:=5;B:=4; END;
在上面例子中,A,B的值在循环的内部发生了变化,但并不影响循环的次数,依然是10次。
4. 多重循环 循环体由PASCAL语句构成,当然也可以包含FOR语句,这就构成了循环的嵌套,
形成多重循环。
例如,以下FOR循环输出5行,每行输出10个星号(*) FOR i:=1 to 5 DO BEGIN
FOR j:=1 TO 10 DO Write('*'); END;
初学者应当特别注意,内层的循环变量不能和外层的循环变量相同。也就是说,嵌套的各层循环应当使用不同的变量作为循环变量。 FOR循环练习题:
1、计算下列式子的值: (1)1+2+??+100 (2)1+3+5+??+97+99
2、输入一个四位数,求它各位上数字的和。
3、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
4、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,??,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?
2、 WHILE类型的循环
1.WHILE循环的执行形式:WHILE 布尔表达式 DO 语句 例如: k:=10;
- 28 -
相关推荐: