选择结构.ppt

上传人:本田雅阁 文档编号:3222400 上传时间:2019-08-02 格式:PPT 页数:42 大小:269.05KB
返回 下载 相关 举报
选择结构.ppt_第1页
第1页 / 共42页
选择结构.ppt_第2页
第2页 / 共42页
选择结构.ppt_第3页
第3页 / 共42页
选择结构.ppt_第4页
第4页 / 共42页
选择结构.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

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

1、第 章 选择结构,5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if语句 5.4 条件运算符 5.5 switch语句,a3 , a+b b ,5.1 关系运算符和关系表达式,关系运算就是比较运算。,关系表达式:,一个比较运算符连接两个表达式(算术、关系、逻辑、 赋值、字符等表达式)。,例如:,若a=5, b=2, c=1 a3成立 结果为1 3abc ab为1, abc为0, 所以f=0。,关系表达式的结果值为逻辑值。 规定:条件成立为1 (逻辑真) 否则为0 (逻辑假),例如:,有六个关系运算符 = 级别 高 = = ; != ; 低,算术运算 关系运算 赋值运算

2、,高 低,ca+b c(a+b) ab!=c (ab)!=c,关系运算符及其优先次序:,例如:,用逻辑运算符将关系表达式连接起来的式子。 逻辑表达式的值为逻辑值。,5.2 逻辑运算符及表达式,结果成立为1(真),否则为0(假); 对于算术值 ,非0为1,0为0。,逻辑表达式:,高 低,! (表达式) 对其后表达式值取反,单目符,逻辑运算符:,若 a=3 ! a = =0 a=3, b=4 !( ab) = = 1,! & | |,逻辑非,功能:,格式:,例如:,(表达式)&(表达式) 当两个表达式值均为真时, 结果为1,否则为0,双目符。,逻辑与,格式:,功能:,k1 & k2,0 & 0 =

3、 0 1 & 0 = 0 0 & 1 = 0 1 & 1 = 1,若 a=10 ; b=3.5; x=a 则 x= 1 ab & bc & !d 0,例如:,例如:,(表达式)| |(表达式) 当两个表达式值,只要有一个为真时, 结果为1,否则为0。双目符,k1 | | k2 0 | | 0 = 0 1 | | 0 = 1 0 | | 1 = 1 1 | | 1 = 1,逻辑或,格式:,功能:,例如:,若a=1 , b=-3, c=c x= ab | bb) | c= = 99 1 a0 0,说明:|和&运算具有短路效应。 1、a & b & c 当a为1时,才判断b, 否则整个值为0。 当a

4、 、b均为1时,才判断c,否则值为0 。,例如:,例如: a=1 & !e & b=3 0,例如: a=1 | !e | a=3 1 若a=3 , !2 | a0 | (a != 0) 1,2、 a | b | c 当a为0时,才判断b, 否则整个值为1。 当a 、b均为0时,才判断c,否则值为1 。,数学式 C表达式 -10x10 x=-10 & x=10,注意,5.3 if 语句,当表达式值为真(非0)时, 执行语句, 否则不执行。,if (xy) printf(“ %d“, x); printf(“%d”, y );,if (表达式) 1条语句或复合句,共有三种格式。,格式1:,功能1:

5、,例如:,流程图:,一般当作单分支用,否则易造成逻辑错误!,如:输出两个数中的大数。,if (xy) printf(“ %d“, x); printf(“%d”, y ); /yx 输出x,y,1 x0 y(x)= 0 x=0 -1 x0,void main() int x, y; printf(“input x:”); scanf(“%d”, ,例程 5-1:,当表达式值为真(非0)时, 执行if后内容, 否则执行else后内容。,if (表达式) 1条语句或复合句 else 1条语句或复合句,流程图:,格式2:,功能2:,if(xy) printf(“%d“, x); else print

6、f(“ %d“, y);,注意:,1、若语句不止一条, 则必须用 括起来。 2、分支中的语句以分号结束。 3、 else总是与最近且在其前的if配对。,例如:,例如:,If( x=0) if(x0) y=1; else y=0; else y=-1;,if (表达式1) 语句1或复合句1 else if(表达式2) 语句2或复合句2 else if(表达式3) 语句3或复合句3 else 语句n,if ( x0 ) y=1; else if ( x=0) y=0; else y=-1;,格式3:,例如:,实现产品保修额的计算。若是本公司的产品,则使用期year1,免费维修;18保修费100元;

7、若不是本公司的产品,一律收费200元。,1、说明变量year,fee,company; 2、键盘给company,year赋值; 3、根据company,year的值,来确定fee; 4、输出fee的值。,例程5-2:,算法:,#include void main() int year,fee; char company; printf(“ my company(y/n)? ”); company=getchar(); printf(“How long use this product :”); scanf(“%d”, ,例程5-3:,实现ATM机功能。根据用户取款的金额,按人民币从大到小的面

8、值先算出最多可以出多少张100元、50元、20元、10元,每次最多取1000元。,1、定义变量p100,p50,p20,p10,total; 2、输入total; 3、若total=1000或 total%10 =0 则p100=total/100; total= total %100; p50=total/50; total=total%50; 否则显示数据出错,算法:,#include void main() int p100,p50,p20,p10,total; printf(“请输入取款数(最多1000元且最小面值10元):“); scanf(“%d“, ,C语言提供了一个三目运算符,

9、用于简单的条件赋值语句或条件表达式。,例如: max= ab? a : b ;,5.4 条件运算符,格式:,表达式1 ? 表达式2 : 表达式3,功能:,先判表达式1, 若非0, 则值为表达式2的值, 否则为表达式3的值。,输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,# include void main ( ) char ch; scanf (“%c“, printf(“%c“, ch) ,运行结果如下: A a,例程 5-4,switch(表达式) case 常量表达式1: n条语句 break; . case 常量表达式n:

10、n条语句; break; default : 语句n+1 ,格式:,5.5 switch 语句,根据成绩等级打印百分数段。,switch (grade), case A: printf (“85100n“); break; case B: printf (“7084n“); break; case C: printf (“6069n“); break; case D: printf (“60n“); break; default: printf (“errorn“); ,例程 5-5 :,1. 常量表达式的值必须互不相等, 否则会 有二异性。,4. 有时几种情况合并执行一组语句。,3. 分支后

11、若有break,则执行完本分支后 跳出switch语句;若无break,则顺序执 行下一条分支。,注意:,2. case的顺序任意。,switch (grade) case A : case B : case C: printf(“60n“); break; case D: printf(“60n“); ,例如:,switch(grade) caseA:caseB:caseC: printf(“60n”); break; caseD: printf(“60n”) ; ,可写成:,switch(grade) case A,B,C: printf(“60n“); break; case: D: p

12、rintf(“60n“); ,例如:,编制一个数值转换程序,要求能进行如下的数制转换: 10进制转换为16进制 16进制转换为10进制 10进制转换为8进制 8进制转换为16进值,例程5-6:,#include void main() int select,a; char ch; L: printf(“n 1: Dec to Hex 2: Hex to Decn“); printf(“n 3: Dec to Oct 4: Oct to Hexn“); printf(“n 5: exitn“); printf(“n Enter your choice:“); scanf(“%d“,switch

13、(select) case 1: printf(“ninput an integer(Dec):“); scanf(“%d“,case 2: printf(“nEnter an integer(Hex):“); scanf(“%x“,case 3: printf(“nEnter an integer (Dec):“); scanf(“%d“,/* ch=getchar(); */ printf(“continue, y/n? “); ch=getchar(); /*scanf(“%*c%c“, ,case 5: goto end; default: printf(“ input error!“

14、); ,编制一个完成两个数的四则运算程序 (输入数值保留两位小数)。,void main() float x , y; char op; printf(“nEnter a calculation(x ? y):“); scanf(“%f%c%f“,例程5-7:,case -: printf(“%f%c%f=%.4fn“,x,op,y, x -y); break; case *: printf(“%f%c%f=%fn“,x,op,y,x*y); break; case /: if (y=0.0) printf(“ Data error!n“); else printf(“%f%c%f=%fn“,

15、x,op,y,x/y); break; default: printf(“%f%c%f n“,x,op,y); ,用户输入日期,计算该日期是这一年的第几天。,1、输入日期 2、判断闰年否?设立闰年标志。闰年的条件是: 年号能被400整除; 或年号能被4整除但不能被100整除。,例5-8:,算法:,3、利用switch语句在各分支后不加break则顺序执 行各分支的特点,按输入的月、日,将该日之前的所有天数累加。 4、输出年月日及天数。,if( y%4=0 ,include void main( ) int y,m,d,leap,days; printf(“Input date(y,m,d):

16、”); scanf(“%d,%d,%d”,switch(m-1) case 12:days+=31; case 11:days+=30; case 10:days+=31; case 9:days+=30; case 8:days+=31; case 7:days+=31; case 6:days+=30; case 5:days+=31; case 4:days+=30; case 3:days+=31;,case 2: if(leap=1) days+=29; else days+=28; case 1: days+=31; printf(“n%d.%d.%d is %d”,y,m,d,days); ,int a=0,b=1; scanf(“%d”, ,switch、break语句的使用。,注意:,

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

当前位置:首页 > 其他


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