《C语言选择结构.pptx》由会员分享,可在线阅读,更多相关《C语言选择结构.pptx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一一 、if if 语句(条件选择语句)语句(条件选择语句)1 1、最基本的、最基本的if if 语句语句表达式表达式语句组语句组或语句或语句真真假假基本基本 if if 语句的通常形式是:语句的通常形式是:if(if(表达式表达式 )语句;语句;if(if(表达式表达式 )语句;语句;语句;语句;if(x y)/*简单语句简单语句*/z=x ;可以为逻辑表达可以为逻辑表达式或关系表达式式或关系表达式if(x y)/*复合语句复合语句*/z=x;x=x+1;printf(“%dn”,z);第1页/共20页复合语句:是由一对花括号包围起来的一条或多条语句。复合语句:是由一对花括号包围起来的一条或
2、多条语句。复合语句的形式:复合语句的形式:选择结构选择结构循环结构循环结构 语句语句1 1;语句语句2 2;语句语句3 3;IfIf(条件条件 )语句语句1 1;语句语句2 2;语句语句3 3;whilewhile(条件条件 )语句语句1 1;语句语句2 2;语句语句3 3;复合语句复合语句逻辑上我们把复合语句看作是一条语句。逻辑上我们把复合语句看作是一条语句。第2页/共20页例1:要求用户输入一个实数,然后程序求出这个实数的绝对值并输出。#include main()float x,y;printf(“Please input x:”);scanf(“%f”,&x);y=x;if(y=0 x
3、=0则则y=xy=x,如果,如果x0 x=0)If(x=0)y=x;y=x;if(x0)if(x=0)If(x=0)语句语句1 1;elseelse 语句语句2 2;第4页/共20页注意:如果使用了复合语句,一定要用大括号把它们括起来。注意:如果使用了复合语句,一定要用大括号把它们括起来。If(x0)If(x0)printf(printf(“x x为正数为正数nn”););x=x+1;x=x+1;elseelse printf(printf(“x x为负数为负数nn”););If(x0)If(x0)printf(printf(“x x为正数为正数nn”););x=x+1;x=x+1;elsee
4、lse printf(printf(“x x为负数为负数nn”););#include#include main()main()int x,y;int x,y;scanf(scanf(“%d,%d%d,%d”,&x,&y);,&x,&y);If(xy)If(xy)printf(printf(“xynxyn”););else else printf(printf(“xyx y)printf(“x大于yn”);else if(x y)printf(“x小于yn”);else printf(“x等于yn”);第6页/共20页/*example2.c*/#include main()char c;pr
5、intf(Enter a character:);c=getchar();if(c=0&c=A&c=a&c=z)printf(The character is a lower lettern);else printf(The character is other charactern);例例例例 判断输入字符种类判断输入字符种类判断输入字符种类判断输入字符种类运行:运行:Enter a character:8 The character is a digit运行:运行:Enter a character:D The character is a capital letter运行:运行:Ente
6、r a character:h The character is a lower letter第7页/共20页#define RATE1 1.0#define RATE2 0.8#define RATE3 0.7#define RATE4 0.5#include main()int num;/*商品的购买量 */float price,money;/*商品的单价和应付金额 */printf(“请输入商品的购买量:”);scanf(“%d”,);printf(“请输入商品的单价:”);scanf(“%d”,);If()/*构物少于10件的不打折 */money=RATE1*price*num;e
7、lse if()/*10件以上8折 */money=RATE2*price*num;else if()/*20件以上7折 */money=RATE3*price*num;else /*50件以上5折 */;printf(“应付金额为%.2 f元n”,);&num&pricenum10num 20num b)max=a;else max=b;max=(a b)?a:b第10页/共20页一般形式:表达式1?表达式2 :表达式3表达式1为真,结果为表达式2的值 表达式为假,结果为表达式3的结果;运算符“?:”的优先级只在逗号和赋值运算 符之前;表达式2和表达式3只可能执行一个;这是C语言中的唯一一个
8、三目运算符;条件运算符的结合方向为“自右自左”。第11页/共20页例:已知a=5,b=6,c=7,d=8,n=2;执行以下语句后表达式的值为多少?n的值为多少?(a b?a:cd?c:dab?a:(cd?c:d)表达式值为15,n=2第12页/共20页六、六、switch 语句语句switch 语句是多分支的选择语句又称开关语句。语句是多分支的选择语句又称开关语句。switch switch 的一般形式为:的一般形式为:注意:常量表达式必须是整型、字符型。注意:常量表达式必须是整型、字符型。switch switch 语句的工作流程:语句的工作流程:switch(switch(表达式表达式表达
9、式表达式)case case 常量表达式常量表达式常量表达式常量表达式1:1:语句组语句组语句组语句组 1;1;break;break;case case 常量表达式常量表达式常量表达式常量表达式2:2:语句组语句组语句组语句组 2;2;break;break;.case case 常量表达式常量表达式常量表达式常量表达式n:n:语句组语句组语句组语句组 n;n;break;break;default:default:语句组语句组语句组语句组 n+1;n+1;break;break;第13页/共20页执行过程:执行过程:(1 1)当)当switchswitch后面后面“表达式表达式”的值,与某
10、个的值,与某个casecase后面的后面的“常量表达式常量表达式”的值相同时,就执行该的值相同时,就执行该casecase后面的语句;后面的语句;当执行到当执行到breakbreak语句时,语句时,跳出跳出switchswitch语句语句。(2 2)如果没有任何一个)如果没有任何一个casecase后面的后面的“常量表达式常量表达式”的值,的值,与与“表达式表达式”的值匹配,则执行的值匹配,则执行defaultdefault分支后面的语句。分支后面的语句。说明(说明(说明(说明(1 1 1 1):):):):常量表达式常量表达式常量表达式常量表达式的的的的值必须互不相同值必须互不相同值必须互不
11、相同值必须互不相同各个各个各个各个case case case case 和和和和 defaultdefaultdefaultdefault的出现次序不影响执行结果的出现次序不影响执行结果的出现次序不影响执行结果的出现次序不影响执行结果casecasecasecase后面的常量表达式仅起语句标号作用,并不进行条件判后面的常量表达式仅起语句标号作用,并不进行条件判后面的常量表达式仅起语句标号作用,并不进行条件判后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进断。系统一旦找到入口标号,就从此标号开始执行,不再进断。系统一旦找到入口标号,就从此标号
12、开始执行,不再进断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上行标号判断,所以必须加上行标号判断,所以必须加上行标号判断,所以必须加上breakbreakbreakbreak语句,以便结束语句,以便结束语句,以便结束语句,以便结束switchswitchswitchswitch语句语句语句语句 第14页/共20页例例 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default :printf
13、(“data error!”);运行结果:运行结果:scorescore为为5 5时,输出:时,输出:Very good!Good!Pass!Fail!data error!Very good!Good!Pass!Fail!data error!第15页/共20页例:根据考试成绩的等级“a,b,c,d”,打印出“优”,“良”等评语。#include#include main()main()char char grade;grade;printf(printf(“请输入成绩等级请输入成绩等级(a,b,c,d)(a,b,c,d):”););scanf(scanf(“%c%c”,&grade);,&
14、grade);switch switch(greade)(greade)case case a a:printf(:printf(“优秀优秀nn”););break;break;case case b b:printf(:printf(“良好良好nn”););break;break;case case c c:printf(:printf(“中等中等nn”););break;break;case case d d:printf(:printf(“差等差等nn”););break;break;default default:printf(printf(“输入错误输入错误n n”););第16页/
15、共20页lcase后可包含多个可执行语句,且不必加后可包含多个可执行语句,且不必加 l多个多个case可共用一组执行语句可共用一组执行语句如:如:case A:case B:case C:printf(“score60n”);break;.说明(说明(说明(说明(2 2 2 2):):):):第17页/共20页例:根据输入的月份值,打印出1998年的某月有多少天。case 9:case 11:day=30;break;case 2:day=28;break;default:day=-1;if(day!=-1)printf(“1998年的%d月有%d 天”,mouth,day);else printf(“月份输入错误!n”);#include main()int month;printf(“请输入月份:”);scanf(“%c”,&mouth);switch(mouth)case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:第18页/共20页作业 4.4 4.5 4.6 4.8 第19页/共20页感谢您的欣赏!第20页/共20页