|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| pascal基础>> 分情况(CASE)语句

双击自动滚屏 

   

分情况(CASE)语句

〖语法分析〗

    分情况语句适用于对一个条件的多种情况的响应。
     格式:
case 表达式 of
    标号1:语句1;
    标号2:语句2;
     ……
     标号n:语句n;
    else 语句n+1
end;

case语句在使用时有几点要注意:

    1. end与case对应;标号与语句之间用“:”分隔;else与语句之间不用分隔符。

    2. 标号必须是一常量,其类型与表达式的类型一致
    例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.

    3. 可以多个标号对应同一条语句

    4. 语句可以是多个语句,但必须用语句括号(begin……end)括起

    5. case语句也可以嵌套
     例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;
         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:=28;
             false: day:=29;
         end;
         end; {————以上处理2月的情况:闰年28天,平年29天}
     end;
end.

练习题:
    1、编程模拟剪刀、石头、布游戏:用S表示剪刀,用R表示石头,用P表示布。规则是:剪刀剪布,石头砸剪刀,布包石头。游戏者分别把自己的选择输入,计算机给出结果。

 

 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海