选择结构程序设计

[复制链接]
发表于 2023-12-22 17:42:07 | 显示全部楼层 |阅读模式
IF语句
条件语句用于响应一个条件的两个方面。
    例如:今天如果下雨,我们就在家;否则(不下雨)我们就去旅游。
    又如:如果已经搜索得到结果,就打印出答案;否则(还没得到结果)就继续搜索。
    IF语句的一般格式是:
    IF 条件
     THEN 语句1{条件为真时的响应、处理}
           ELSE 语句2;{条件为假时的响应、处理}
    使用条件语句时要注意:
     1、条件语句是一个语句。IF、THEN、ELSE都是语句的一个部分。所以它只能有一个“;”作为分隔符,放在句子的结束,特别要注意不能放在ELSE 之前。
    2、如果我们的程序只需对条件为真的情况作出处理,不需要处理条件为假的情况,则IF语句省略ELSE分句,格式变成:
     IF 条件
     THEN 语句1;{条件为真时的响应、处理}
    如: 如果数a大于等于0则输出它的平方根。
     if a>=0 then writeln(sqrt(a));
     对以上的例子,条件为假时不需处理,于是我们干脆省去ELSE分句。
    3、if语句可以多层嵌套。嵌套时为了避免误解,可以用begin ,end括起嵌套部分;else分句一般和最近的if分句配套:
    IF 条件
     THEN BEGIN
        if 条件1then …… else ……;
     END
    ELSE BEGIN
        if 条件2then …… 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.

4.2 CASE语句
    分情况语句适用于对一个条件的多种情况的响应。
     格式:
case 表达式 of
    标号1:语句1;
    标号2:语句2;
     ……
     标号n:语句n;
    else 语句n+1
end;
case语句在使用时有几点要注意:
    1.end与case对应;标号与语句之间用“:”分隔;else与语句之间不用分隔符。
    2.标号必须是一常量,其类型与表达式的类型一致
    例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
     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语句也可以嵌套
   例3:从键盘上读入年和月,输出该月有多少天。
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.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表