第五章 选择结构程序设计.ppt

上传人:rrsccc 文档编号:10305138 上传时间:2021-05-07 格式:PPT 页数:29 大小:245KB
返回 下载 相关 举报
第五章 选择结构程序设计.ppt_第1页
第1页 / 共29页
第五章 选择结构程序设计.ppt_第2页
第2页 / 共29页
第五章 选择结构程序设计.ppt_第3页
第3页 / 共29页
第五章 选择结构程序设计.ppt_第4页
第4页 / 共29页
第五章 选择结构程序设计.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《第五章 选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第五章 选择结构程序设计.ppt(29页珍藏版)》请在三一文库上搜索。

1、第五章 选择结构程序设计,信息管理系,在实际生活中,往往会要求根据情况的不同,选择不同的操作。 例如:输出两个数据a、b中较大的一个。 如果ab 输出a; 否则 输出b; C语言提供了以下几种语句来实现这种情况。,一、if 语句,1、使用格式 、 if(条件) 语句1; else 语句2; 执行流程如图1所示。,【说明】,条件必须要放到()中。 条件可以是任意表达式(常用的是条件表达式和逻辑表达式)。若表达式的值为非0,则视为满足条件,若表达式的值为0,则视为不满足。 整个if 语句是一条语句。 语句1和语句2可以是任意一条语句,也可以是if语句。如果要执行多个操作,需要写成复合语句的形式。,

2、例1:上题输出两数中的大者。,输出两个数据a、b中较大的一个。 如果ab 输出a; 否则 输出b; 语句实现: 练习1:编写程序,输出实数x的绝对值。,使用格式: if(条件) 语句1; else 语句2;,if(条件) 语句1; else 语句2;,ab,printf(“%d”,a);,printf(“%d”,b);,练习1:编写程序,输出实数x的绝对值。,1、读入x的值 2、根据x的不同情况进行操作: 如果 x=0 |x|=x;/*也就是说输出x;*/ 否则 |x|=-x;/*也就是说输出-x;*/ 语句实现: (见程序P5_1),if(条件) 语句1; else 语句2;,x=0,pri

3、ntf(“|x|=%f”,x);,printf(“|x|=%f”,-x);,if语句的使用格式, 如果不满足时什么也不做,则可用如下格式: if(条件) 语句1; 执行流程如图2所示。,例2:,读入一个字符,如果是个大写字母,则输出。 (见程序P5_2),if(条件) 语句1;,char ch; /*定义变量*/,scanf(“%c”, ch); /*读入数据*/,进行操作:,使用if的第二种格式,例3:,有三个整数a、b、c,将其最大者放入a,次之放入b,最小者放入c。(见程序P5_3) 1、先将a、b中的大者放入a(保证a中存放a、b中的较大的一个): 2、再让a与c比较,将较大的一个放入

4、a(保证a中存放最大的那个): 3、比较b和c,将较大的那个放入b(保证c中存放最小的那个):,if (ab) 交换a、b的值,z=a;a=b;b=z;,if (ac) 交换a、c的值,z=a;a=c;c=z;,if (bc) 交换b、c的值,z=b;b=c;c=z;,练习2:,编写程序,判断输入的年份是否为闰年。若为闰年,则输出“这一年是闰年”,(年份能被4整除,但不能被100整除,或者能被100整除,又能被400整除)。,main() int year; scanf(“%d”, if(year%4=0 scanf(“%f%f%f”, ,练习3:,编写程序,任意输入x的值,输出相应y的值。

5、(见程序P5_4),已知:,练习4:,编写一个程序,判断一个整数是否为三位数,如果是,则反向输出。如输入235,输出532 【分析】 1、如何判断x是三位数:100=x=999 2、如何求个位数、十位数和百位数: 假设x为一个三位数则 个位数a= x%10; 十位数b(x/10)%10或b=(x%100)/10; 百位数c= x/100; (见程序P5_5),二、条件表达式,max = ab?a:b 等价于: if (ab) max=a; else max=b;,三、switch语句,当分支很多时(有多种可能,选其一执行)。 1、使用格式 switch(表达式) case 常量表达式1:语句1

6、; case 常量表达式2:语句2; case 常量表达式3:语句3; case 常量表达式n:语句n; default:语句n+1; 表示其中部分如需要可有,如不需要可无。,例1:,要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现。 switch ( grade) case A:printf(“n85100”);break; case B:printf(“n7084”);break; case C:printf(“n6069”);break; case D:printf(“n60”);break; default : printf(“nerror”); (见程序P5_6)

7、,【说明】,switch、case等为关键字,要原样照写;不要漏掉。 switch后面括弧内的表达式的值只允许它为整型或字符型; case后的表达式的值应该是整型或字符型的常数。 例如可以出现case 3+4 : ,但不能出现case 3.4:。 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 每个case的常量表达式的值必须互不相同。,【说明】,各个case和default的出现次序不影响执行结果,例如,可以先出现default,再出现case语句。 再执行swi

8、tch语句时,格式switch后面表达式的值找到匹配的入口,就从此执行,执行完一个case后面的语句后,自动转换到下一个case继续执行。 如果我们想让程序执行完一个分支后,不再执行后面的case语句,即终止switch语句的执行可以用break语句来实现。 每个分支可以包含多个语句。 多个case 可共用一组执行语句。 允许嵌套使用switch语句。,带有break语句的switch语句的执行流程如图3所示:,表达式的值,值1,值2,值3,值n,语句1,语句2,语句3,语句n,图3,例3:,给出一百分制成绩,要求输出成绩等级:10090分输出A,8089分为B,7079分为C,6069分为D

9、,60分以下为E。,scanf(“%d”, ,练习 :,1、以下程序的输出结果是() main() int x=1, a=0, b=0 ; switch ( x ) case 0: b+; case 1: a+; case 2: a+,b+; printf (“na=%d,b=%d”,a,b) ; A)a=2,b=1 B)a=1,b=1 C)a=1, b=0 D)a=2,b=2,练习 :,2、下面程序的输出结果是() main() int x=1, y=0, a=0, b=0 ; switch (x ) case 1: switch (y ) case 0: a+; break; case 1

10、: b+; break; case 2: a+; b+; break; printf (“a=%d,b=%dn”, a,b); A)a=2,b=1 B)a=1, b=1 C)a=1,b=0 D)a=2,b=2,练习 :,3、与y = ( x 0 ? 1 : x 0 ? 1 : 0 ) ;的功能相同的if语句是() A) B) C) D),if(x) if(x0 y=1; else if (x0) y=-1; else y=0;,if(x0) y=1; else if (x0) y=-1; else y=0;,if(x0) y=1; else if (x=0) y=0; else y=-1;,i

11、f(x=0) if (x0) y=1; else y=-1;,练习 :,4、下面程序的输出结果是() main() float x=2.0,y; if(x0.0) y=0.0; else if (x10.0) y=1.0/x; else y=1.0; printf(“n%f”,y); A)0.000000 B)0.250000 C)0.500000 D)1.000000 5、当a=3,b=4,c=5时,执行以下程序的输出结果是() if (a!=c) ; a=c; c=b; b=a; ,练习 :,6、设ok1=1,ok2=2,ok3=0,x=15,a=3,b=4,执行以下程序段后x的值是()

12、if(ok1) if (ab) if(!ok3) x=0; else x=1; else x=2; else x=3; ,练习 :,作业: 输入某年月日,计算该天是该年中第几天。 如:若输入2004 1 20,则1月20日是2004年的第20天。 若输入2004 2 5,则2月5日是2004年的第36天。 (见程序P5_7),总结:,选择结构的程序设计有三种实现方法: 一般情况下: 如果有2种或3种可能情况,从中选择一种来执行,则使用if语句比较方便; 如果有很多种情况,从中选择一种来执行,则使用switch语句实现比较方便; 条件语句在考试中常以填空或选择的形式出现,让你求执行结果。 不管使用哪种语句,一定要牢记使用格式,并多加练习。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1