四、 CASE语句 分情况语句适用于对一个条件的多种情况的响应。
格式:
case 表达式 of
标号1:语句1;
标号2:语句2;
……
标号n:语句n;
else 语句n+1
end; case语句在使用时有几点要注意: 1. end与case对应;标号与语句之间用“:”分隔;else与语句之间不用分隔符。 2. 标号必须是一常量,其类型与表达式的类型一致 3. 可以多个标号对应同一条语句 4. 语句可以是多个语句,但必须用语句括号(begin……end)括起 5. case语句也可以嵌套例1:输入两个数值(均不为0)及一个算术运算符,输出其运算的结果。Program pp;Var x,y,s:real;Ch:char;BeginRead(x,y);read(ch);Case ch of‘+’:s:=x+y;‘-’:s:=x-y;‘*’:s:=x*y;‘/’:s:=x/yEnd;Writeln(x,ch,y,’=’,s);end. 例2: 某全自动加油站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
readln(kg);
readln(oil);
readln(help);
case oil of
'a': total:=1.50*kg;
'b': total:=1.35*kg;
'c': total:=1.18*kg; end; case help of
'f':;
'm': total:=total*(1-0.05);
'e': total:=total*(1-0.10); end; writeln('Total is ',total:10:2);
end. 练习:
1、 当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。(提示:可以利用DIV运算来使程序更简明)2、打印某年某月有多少天。(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。B、利用MOD运算可以判断一个数能否被另一个数整除)
IF只能针对一个条件实现两个个分支,CASE可以根据一个表达式的值实现多个分支。
事实上几乎所有的CASE语句都可以用符合IF来实现,但是那样程序不直观,书写的内容也较多。
相反,CASE语句不能取代各种IF语句
var i: Integer; i:= 2; case i of 0: showmessage('x'); 1: showmessage('y'); 2: showmessage('z');case后的变量必须为有序变量类型。