当前位置:文档之家› if语句&switch语句

if语句&switch语句


(1)先后用3个独立的if语句处理 输入x scanf("%d",&x); 若 x<0, 则y=-1 if(x<0) y=-1; 若 x=0, 则y=0 if(x==0) y=0; 若 x>0, 则y=1 if(x>0) y=1; 输出x和y printf("x=%d,y=%d\n",x,y);
(2)用一个嵌套的if语句处理 输入x 若x>=0 若 x>0, 则y=1 否则 y=0 否则 y=-1 输出x和y scanf("%d",&x); if (x>=0) if (x>0) y=1; else y=0; else y=-1; printf("x=%d,y=%d\n",x,y);
if语句只有两个分支可供选择,在实际问题中常常 需要用到多分支的选择。 举例:成绩等级分类,人口年龄分类,工资统计分 类,银行存款分类等等。 以上情况如果用if语句处理,分支较多,程序冗长, 可读性差。 switch语句可以方便地处理多分支选择。

switch语句的一般形式: switch(表达式) 整型及字符型数据 { case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 }
3’、if (number > 500) cost = 0.15; else if (number > 300) cost = 0.10; else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost = 0;
1、if(a==b && x==y) printf(‚a=b,x=y‛); 2、if(x >0) printf (‚ %f‛,x); else printf (‚ %f‛ ,-x); 3、if(number > 500) cost=0.15; else if(number>300) cost=0.10; else if(number>100) cost=0.075; else if(number>50) cost=0.05; else cost=0;
switch语句的作用:根据表达式的值,使流程跳转到不同 的语句。
switch(grade) { case 'A': printf("85~100\n");
case 'B': printf("70~84\n");
case 'C': printf("60~69\n"); case 'D': printf("<60\n");
说明:1、当表达式的值与某一个case后面的常量表达式的值相等时, 执行case后面的语句。 2、每个case的常量表达式的值必须互不相同,否则会出现互相矛 盾的现象。 3、各个case和default的出现次序不影响执行结果。可以先出现 default,再出现case ‘A’,case ‘D’等,但建议default 放在最后边。 4、执行完一个case语句后,流程控制转移到下一个case继续执行。
说明:为使程序结构清晰,便于他人阅读,也便于 维护,程序应做到: 1、采用锯齿形式,内嵌语句向右缩进2列或多列。 2、同一层次的成分(如同一层的if和else)出现在 同一列上。


程序改进: void main() { int number; double discount,price,total;
if (表达式) 语句1
[ else 语句2 ]
方括号内的部分为可选的
if (表达式) 语句1 [ else 语句2 ]
语句可以为简单的语句、复合语句、另 一个if语句等
最常用的3种if语句形式: 1. if (表达式) 语句1 (没有else子句) 2. if (表达式) 语句1 else 语句2 (有else子句) 3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ┆ else if(表达式n) 语句n else 语句n+1 (在else部分又嵌套了多层的if语句)
if语句的嵌套
if语句的嵌套:在if语句中又包含一个或多个if语句称为一 般形式: if( ) if( ) 语句1 else 语句2 内嵌if语句 else if( ) 语句3 else 语句4
if() { if() 语句1 } else语句2
内嵌if语句 { }限定了内嵌if范围
注意:else总是与它上面最近的未配对的if配对。 思考下面程序的配对结果。 1、if() 2、if() else 语句1 if() 语句1 if()语句2 else else 语句3 if()语句2 else 语句3 else 语句4
作业
1、使用if else和switch语句实现给出一个百分制成绩,要求输 出成绩等级‘A’‘B’‘C’‘D’‘E’,其中90分以上为 ‘A’,80-89分为‘B’,70-79分为‘C’, 60-69分为‘D’,60分 以下为‘E’。 2、P106要求编写程序,实现用户输入购买的数量和单价输出 应付货款。
if(number>=500) discount=0.10; else if(number>=300) discount=0.075; else if(number>=50) discount=0.05; else discount=0; total=number*price*(1-discount); printf("Total=%10.2f\n",total); }

给出三角形的边长,求三角形的面积。 int main() {... scanf(‚%lf,%lf,%lf‛,&a,&b,&c); if(a+b>c && b+c>a && c+a>b) { s=0.5*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(‚area=%6.2f\n‛,area); } else printf(‚it’s not a trilateral.\n‛); …}

void main() { int number; double discount,price,total;
//discount为折扣, //price为单价,total为总价
printf("please enter number and price:"); scanf("%d,%lf",&number,&price);
输入x 若x<0, 则y=-1 否则 若x=0, 则y=0 否则 y=1 输出x和y
scanf("%d",&x); if(x<0) else if(x==0) y=0; y=-1;
else
y=1;
printf("x=%d,y=%d\n",x,y);
思考: P120,判断程序正确与错误。
switch语句
例1:为促销,对购买货物多的顾客有优惠,大于等 于50件的优惠5%,大于等于100件的优惠7.5%,大于 等于300件的优惠10%,大于等于500件的优惠15%, 编写程序,要求用户输入购买的数量和单价,计算 应付货款。 解题思路:检查数量的范围,根据数量范围,确定 优惠折扣。 计算公式:应付货款=件数*单价*(1-优惠折扣)。
//discount为折扣,
//price为单价,total为总价
printf("please enter number and price:"); scanf("%d,%lf",&number,&price);
if(number>=500) discount=0.10; else if(number>=300) discount=0.075; else if(number>=50) discount=0.05; else discount=0; 采用锯齿形式 total=number*price*(1-discount); printf("Total=%10.2f\n",total); }
说明: (1)整个if语句可写在多行上,也可写在一行上,但都是一 个整体,属于同一个语句。 (2)‚语句1‛…‚语句n‛是if中的内嵌语句,内嵌语句也 可以是一个if语句。 (3)‚语句1‛…‚语句n‛可以是简单的语句,也可以是复 合语句,需要用{ }将几个语句括起来。 (4)else子句不能单独使用,它必须是if语句的一部分,与 if配对使用。
上课要求
课前预习 将手机调到静音 认真做笔记 及时完成作业
学习目标
了解if语句的一般形式 学会使用嵌套的if语句 学会使用switch语句
学习内容
if语句的一般形式 if语句的嵌套 switch语句
if语句的一般形式
if语句分为两种类型: 不带else子句的和带else子句的。 一般形式为:
5、case 常量表达式只起语句标号的作用,并不是在该处Байду номын сангаас行条件判
断。
6、当case后面包含一个以上的执行语句时,可以不必用{}括起来, 程序自动执行case后面的所有语句。 case 70:printf(‚your age is 70‛); printf(‚you can enter the park freely‛); 7、多个case可以共用一组执行语句。 case ‘A’: case ‘B’: case ‘C’:printf(‚>60\n‛);break; 当grade的值为‘A’、‘B’或‘C’时,都执行printf(‚>60\n‛); break;
相关主题