选择结构的程序设计

上传人:bin****86 文档编号:54845678 上传时间:2018-09-20 格式:PPT 页数:30 大小:369KB
返回 下载 相关 举报
选择结构的程序设计_第1页
第1页 / 共30页
选择结构的程序设计_第2页
第2页 / 共30页
选择结构的程序设计_第3页
第3页 / 共30页
选择结构的程序设计_第4页
第4页 / 共30页
选择结构的程序设计_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《选择结构的程序设计》由会员分享,可在线阅读,更多相关《选择结构的程序设计(30页珍藏版)》请在金锄头文库上搜索。

1、,选择结构的程序设计,第五章 选择结构的程序设计,第一节 用if语句设计选择结构程序 第二节 用switch语句设计多分支结构程序,5-1 用if语句设计选择结构程序,提出问题,二重分支的条件语句 if 多重分支的条件语句 switch,自然语言:如果 那么否则 C语言: 分支语句,5-1 用if语句设计选择结构程序,if语句格式格式1:if (表达式) 语句;格式2:if (表达式) 语句1;else 语句2; if语句的执行流程 流程1: 流程2:,5-1 用if语句设计选择结构程序(续1),例C5_101.C:求a和b两数中较大的一个。 #include main( ) /* 程序功能:

2、求a和b的最大值 */ int a,b,max;printf(“Input a and b=“);scanf(“%d%d”, ,if语句中进行条件判断的“表达式”必须用( )括起来且不可省略,5-1 用if语句设计选择结构程序(续2),例C5_101.C:求a和b两数中较大的一个。 #include main( ) /* 程序功能:求a和b的最大值 */ int a,b,max;printf(“Input a and b=“);scanf(“%d%d“, ,以上两个程序等价,5-1 用if语句设计选择结构程序(续3),例C5_102.C:从键盘输入被除数a和除数b,求商。main( ) int

3、 a,b;printf(“Enter two numbers: “);scanf(“%d%d“, ,if (b) printf(“%dn“, a/b); else printf(”error.n“); 等价!,(b!=0),等价,5-1 用if语句设计选择结构程序(续4),if语句嵌套义:在if语句的“语句1”或“语句2”中又包含着if语句 例C5_103.C:比较两个整数的关系(大小/相等)。#include main( ) int x, y;printf (“Enter integer X and Y:“);scanf (“%d%d“, ,说明:采用“缩进”的书写形式来表示语句的层次。 注

4、意:缩进仅是一种书写的形式,不具有逻辑意义,5-1 用if语句设计选择结构程序(续5),嵌套if-else语句的配对关系例:if(ab) /*1 */if(ac) /*2 */if(ad) flag=1; /*3 */else flag=2; /*4 */else flag=3; /*5 */问题:第四行和第五行的else语句和那一个if语句相匹配呢?分析:匹配方案可以有很多中,(2-4,1-5),(3-4,2-5),(1-4,),匹配规则:在嵌套的if-else语句中,else子句总是与上面的、离它最近的、且在同一复合语句中还没有配对的if子语配对。,5-1 用if语句设计选择结构程序(续6

5、),1、if (ab)if (ac)if (ad) flag=1;else flag=2;else flag=3;程序含义:当 cab 时,flag=3 2、if (ab) if (ac)if (ad) flag=1;else flag=2; /* 以上是一个完整的复合语句 */else flag=3;程序含义:当 a=b 时,flag=3,5-1 用if语句设计选择结构程序(续7),3、if (a=b)if (b=c) printf(“a=b=cn“);else printf(”a!=bn”); 尽管书写格式如此,真实的正确的含义是:if (a=b)if (b=c) printf(“a=b=

6、cn“);else printf(“a!=bn”); 通过加 ,可以改变配对关系:if (a=b) if (b=c) printf(“a=b=cn“);else printf(”a!=bn”);,5-1 用if语句设计选择结构程序(续8),例C5_104.C:已知银行整存整取存款月息利率分别为:0.315% 期限一年 0.330% 期限二年0.345% 期限三年 0.375% 期限五年0.420% 期限八年 其他:0要求输入存钱的本金和期限,求到期时利息与本金合计。银行到期利息计算公式: 利息本金月息利率12存款年限程序中应当根据存款的年限确定利率,5-1 用if语句设计选择结构程序(续9),

7、#include main( ) int year;float money,rate,total; /* 本金,月利率,本利合计*/printf(“Input money and year =?“);scanf(“%f%d“, ,5-1 用if语句设计选择结构程序(续10),采用if-else if结构改写。#include main( ) int year;float money,rate,total; /* 本金,月利率,本利合计*/printf(“Input money and year =?“);scanf(“%f%d“, ,5-1 用if语句设计选择结构程序(续11),例C5_105

8、.C:通过键盘输入字符,将输入的字符分为控制、数字、大写字母、小写字母和其他字符等五类。ASCII码表中的前32个字符为控制字符,0 9为数字, A Z为大写字母, a z为小写字母,其它。,5-1 用if语句设计选择结构程序(续11),#include main ( ) char c;printf (“Enter a character:“);c=getch( );if(c=0 ,例C5_105,5-1 用if语句设计选择结构程序(续12),if语句与条件运算的关系 例:求一个数字的绝对值,if ( y0 ) x=-y; else x=y;,(y0)?x=-y:x=y;,等价,等价,x =

9、(y0 ? a/b : a0 ? a/b : a0 ? a+b : a-b ;,5-2 switch语句,switch语句格式switch (表达式) case 常量1:语句序列1break; case 常量2:语句序列2break; default: 语句序列n+1 ,5-2 switch语句(续1),switch (number) case 1: statement 1;break;case 2: statement 2;break;case 3: statement 3;break;default: statement 4; statement 5;,当number的值为2时,5-2 s

10、witch语句(续2),switch语句使用注意事项 1.switch语句与if语句不同,仅能判断一种关系:是否恒等。 2.switch语句中case子句的常量可以是整型常量、字符型常量、枚举型数据,或是整型常量表达式,不允许是变量。3.在同一个switch中,case子句的常量不能相同;在嵌套的switch语句中,不同层次的switch之间,可有相同的常量。,5-2 switch语句(续2),4.default子句可以省略。 5.case 和 default 子句只能在switch语句中使用,且 case和 default 只起标号作用,可出现在switch中的任何位置。 6.case 和

11、default 子句后面的语句序列允许由多个可执行语句组成,且不必用“ ”括起来,也可以为空语句。 7.switch 语句中的 break 语句不是必须。注意区别。,5-2 switch语句(续3),例C5_104.C:计算存款本利。采用switch改写。#include main( ) int year;float money,rate,total; /* 本金,月利率,本利合计*/printf(“Input money and year =?“);scanf(“%f%d“, ,5-2 switch语句(续4),例C5_203.C:输入年份year和月month,求该月天数。 如何判断闰年?

12、闰年:能够被4整除且不能被100整除的年份或 能够被400整除的年份例如:1996年是闰年 2000年是闰年1900年是平年 判断闰年的C语言公式 year % 4 = 0 & year % 100 != 0 | year % 400 = 0当year = 1996 时,结果为 1当year = 1997 时,结果为 0当year = 1900 时,结果为 0当year = 2000 时,结果为 1,若为闰年:结果为1 若为平年:结果为0,5-2 switch语句(续5),main( ) int year, month, days;scanf(“%d%d“, ,1. 省略case子句之后的语句

13、。 2. 注意break语句的作用。,5-2 switch语句(续6),省略break语句flag=-1; /* error marker */switch (i) case 1: case 2: case 3:flag=0; /* no error */break;case 4: flag=1; /* error #1 */case 5: error(flag); /* error process */break;default: flag=2; /* other error */ /* 假定函数error是出错处理函数 */当 i=1,2,3时:flag = 0;退出。当 i=5 时:fl

14、ag = -1;调用 erorr(flag);退出。当 i=4 时:flag = 1;调用 error(flag);退出。,5-2 switch语句(续7),例C5_202.C:请编写一个程序计算表达式: data1 op data2 的值。例如,从键盘输入 5 + 4 ,程序输出 9 ;从键盘输入 12 / 4 ,程序输出 3 。,5-2 switch语句(续8),main ( ) float data1, data2; /*定义操作数变量*/char op; /*定义操作符变量*/printf(“Enter your expression:“);scanf (”%f%c%f”, /* 输入

15、表达式 */,5-2 switch语句(续8),switch ( op ) /* 根据操作符分别进行处理 */ case + : /* 处理加法 */printf(“%.2f+%.2f=%.2fn“, data1, data2, data1+data2);break;case - : /* 处理减法 */printf (“%.2f-%.2f=%.2fn“, data1, data2, data1-data2);break;case * : /* 处理乘法 */printf (“%.2f*%.2f=%.2fn“, data1, data2, data1*data2);break;case / : /* 处理除法 */if ( data2=0 ) /* 若除数为 */printf (“Division by zero.n“);elseprintf (“%.2f/%.2f=%.2fn“, data1, data2, data1/data2);break;default: /* 输入其它运算符 */printf (“Unknown operater.n“);,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号