《c语言(第五章选择结构)课件.ppt》由会员分享,可在线阅读,更多相关《c语言(第五章选择结构)课件.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章选择结构程序设计选择结构程序设计C语言程序设计 第五章 选择结构程序设计选择结构选择结构根据所指定的条件是否满足根据所指定的条件是否满足,决定从给定决定从给定的两组操作选择其一的两组操作选择其一PAB真真假假C语言程序设计 第五章 选择结构程序设计本章主要内容本章主要内容关系运算符和关系表达式关系运算符和关系表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式if 语句语句switch 语句语句程序举例程序举例C语言程序设计 第五章 选择结构程序设计5.1关系运算符和表达式关系运算符和表达式关系运算:判断两个数据间的某种关系是关系运算:判断两个数据间的某种关系是否成立否成立35 不成
2、立(假)不成立(假)53 成立(真)成立(真)关系运算符关系运算符种类:种类:=!=结合方向:自左向右结合方向:自左向右优先级别:优先级别:高于赋值运算符高于赋值运算符 低于算术运算符低于算术运算符C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计例例 int a=3,b=2,c=1,d,f;ab ab=c b+cb f=abc (a=3)(b=5)/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/表达式的值表达式的值1,d的的1/表达式的值表达式的值0,f的值的值0/表达式的值表达式的值0关系表达式:用关系运算符将两个表达式关系表达式:用关系运算符将
3、两个表达式(可以是算术表达式、关系表达式、逻辑(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接表达式、赋值表达式、字符表达式)连接起来的式子,称为起来的式子,称为关系表达式的值:只有两个值关系表达式的值:只有两个值“真真”或或“假假”,用,用1(真真)和和0(假假)表示表示C语言程序设计 第五章 选择结构程序设计关系运算注意:关系运算注意:(1)若若a=0;b=0.5;x=0.3;则则 a=x278在在C中是允许的,中是允许的,值为值为0(3)int i=1,j=7,a;a=i+(j%4!=0);则则a=2C语言程序设计 第五章 选择结构程序设计(4)ab 结果为结果为
4、a0 结果为结果为A100 结果为结果为100(5)注意区分)注意区分“=”与与“=”int a=0,b=1;a=b 赋值表达式赋值表达式 结果为结果为1a=b 关系表达式关系表达式 结果为结果为0C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计5.2逻辑运算符和表达式逻辑运算符和表达式逻辑运算符逻辑运算符种类:种类:!(非非,not)&(并且并且,and)|(或者或者,or)C语言程序设计 第五章 选择结构程序设计逻辑运算真值表逻辑运算真值表ab!a!ba&ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假
5、C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计1 ()2 -!+-&3 */%4 +-5 6 =7 =!=8 9 10 11&12|13?:14 赋值运算符赋值运算符15 逗号运算符逗号运算符C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计逻辑表达式逻辑表达式用逻辑运算符将关系表达式或逻辑量连用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。接起来的式子就是逻辑表达式。逻辑表达式的值应该是一个逻辑量逻辑表达式的值应该是一个逻辑量“真真”或或“假假”。运算量运算量:0表示表示“假假”非非0表示表示“真真”运算结果运算结
6、果:“假假”用用0表示表示“真真”用用1表示表示C语言程序设计 第五章 选择结构程序设计例例 a=4;b=5;!aa&ba|b!a|b4&0|253&2|83)&2|(8b)&(n=cd)/表达式值为表达式值为0,m=0,n=1C语言程序设计 第五章 选择结构程序设计/*ch5_02.c*/main()char c=c;int i=1,j=2,k=3;float x=3e+5,y=0.85;printf(%d,%dn,!x*!y,!x);printf(%d,%dn“,x|i&j-3,ij&xy);printf(%d,%dn,i=5&c&(j=8),x+y|i+j+k);运行结果:运行结果:0,
7、01,00,1C语言程序设计 第五章 选择结构程序设计例判定例判定x是否在是否在a,b的表达式的表达式a=x&xy)printf(“%d”,x);expressionstatement非非0=0C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计运行:运行:Enter an integer:-12 integer:-12-absolute value:12C语言程序设计 第五章 选择结构程序设计形式二:形式二:格式:格式:if(expression)statement1elsestatement2执行过程:执行过程:例:例:if(xy)max=x;else max=
8、y;expressionstatement1statement2非非0=0C语言程序设计 第五章 选择结构程序设计例例 输入两个数并判断两数相等否输入两个数并判断两数相等否/*ch5_04.c*/#include main()int a,b;printf(Enter integer a:);scanf(%d,&a);printf(Enter integer b:);scanf(%d,&b);if(a=b)printf(a=bn);else printf(a!=bn);C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计形式三:形式三:格式:格式:if(expr1)s
9、tatement1else if(expr2)statement2else if(expr3)statement3.else statementn C语言程序设计 第五章 选择结构程序设计=0expression1statement1非非0=0expression2expression3statementnstatement3statement2非非0非非0=0执行过程执行过程C语言程序设计 第五章 选择结构程序设计C语言程序设计 第五章 选择结构程序设计例例 判断输入字符种类判断输入字符种类/*ch5_05.c*/#include main()char c;printf(Enter a ch
10、aracter:);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);C语言程序设计 第五章 选择结构程序设计运行:运行:Enter a character:The character is a control character运行:运行:Enter a character:8 The character is a digit运行:运行:Enter a character:D The character i
11、s a capital letter运行:运行:Enter a character:h The character is a lower letter运行:运行:Enter a character:F1 The character is other characterC语言程序设计 第五章 选择结构程序设计说明:说明:if后面的表达式类型任意后面的表达式类型任意语句可以是复合语句语句可以是复合语句 if(x)if(x!=0)if(!x)if(x=0)如:如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);C语
12、言程序设计 第五章 选择结构程序设计if(expr1)if(expr2)statement1 else statement2内嵌内嵌ifif(expr1)if(expr2)statement1else statement3内嵌内嵌ifif语句嵌套:语句嵌套:一般形式:一般形式:C语言程序设计 第五章 选择结构程序设计if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌内嵌if内嵌内嵌ifif(expr1)statement1else if(expr3)statement3 e
13、lse statement4内嵌内嵌ifC语言程序设计 第五章 选择结构程序设计/*ch5_06.c*/#include main()int x,y;printf(Enter integer x,y:);scanf(%d,%d,&x,&y);if(x!=y)if(xy)printf(XYn);else printf(XYn);else printf(X=Yn);例例 输入两数并判断其大小关系输入两数并判断其大小关系C语言程序设计 第五章 选择结构程序设计运行:运行:Enter integer x,y:12,23 XYEnter integer x,y:12,12 X=YC语言程序设计 第五章
14、选择结构程序设计if else 配对原则:配对原则:缺省缺省 时,时,else总总是和它上面离它最近的未配对的是和它上面离它最近的未配对的 if 配配对对.if()if()if()else.else.else.C语言程序设计 第五章 选择结构程序设计例:例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);避免避免if与与else配对错位的最佳办法是加大配对错位的最佳办法是加大括号,同时,为了便于阅读,使用适当的括号,同时,为了便于阅
15、读,使用适当的缩进缩进.C语言程序设计 第五章 选择结构程序设计例例 考虑下面程序输出结果考虑下面程序输出结果:main()int x=100,a=10,b=20;int v1=5,v2=1;if(ab?(m=cb):(n=bd)结果:结果:k=0,m=5,n=0C语言程序设计 第五章 选择结构程序设计功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般if语句语句.例例 if(ab)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,ab?a:b);例例 if(ab)max=a;elsemax=b;max=ab?a:b;ab?pri
16、ntf(“%d”,a):printf(“%d”,b);C语言程序设计 第五章 选择结构程序设计例例 求求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);例例 (a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c0?1:(xb?a:b+1(ab)?a:(b+1)C语言程序设计 第五章 选择结构程序设计结合方向:自右向左结合方向:自右向左如如 ab?a:cd?c:d ab?a:(cd?c:d)例:例:int a=1,b=2,c=3,d=4,m=5,n=6,k;k=ac?(m=cb):(n=bd)结果:结果:k=4,m=5,n=6C语言程序设计 第五章
17、选择结构程序设计例例 x?a:b /x=0,表达式值为表达式值为b;x 0,表达式值为表达式值为axy?1:1.5 /xy ,值为值为1.0;xb)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);例例1 输入两个实数,按数值由小到大输入两个实数,按数值由小到大的次序输出这两个数的次序输出这两个数C语言程序设计 第五章 选择结构程序设计main()float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%
18、5.2fn,a,b,c);例例2 输入输入3个数个数a,b,c,按由小到大,按由小到大的顺序输出的顺序输出C语言程序设计 第五章 选择结构程序设计main()int x,y;scanf(%d,&x);printf(“x=%d,y=%dn,x,y);if(x=0)if(x0)y=1;else y=0;else y=-1;y=-1;if(x!=0)if(x0)y=1;else y=0;if(x0)y=1;if(x=0)y=0;if(x=0)if(x0)y=1;else y=-1;例例3:有一函数:有一函数 -1 (x0)C语言程序设计 第五章 选择结构程序设计main()char ch;scanf
19、(%c,&ch);ch=(chA&chb);max=a;if(ab)max=a;if(a+bc,a+cb,b+ca)if(a+bc&a+cb&b+ca)C语言程序设计 第五章 选择结构程序设计switch(表达式表达式)case E1:语句语句 1;break;case E2:语句语句 2;break;.case En:语句语句 n;break;default:语句语句;break;5.5 switch语句(多分支语句)语句(多分支语句)一般形式:一般形式:C语言程序设计 第五章 选择结构程序设计switch表达式表达式语句组语句组1语句组语句组2语句组语句组n语句组语句组.E 1E 2End
20、efaultcase 执行过程:执行过程:C语言程序设计 第五章 选择结构程序设计开关表达式的值与某个开关表达式的值与某个case后的常量表后的常量表达式的值相等时,就执行此达式的值相等时,就执行此case后面的后面的语句。若所有的语句。若所有的case中的常量表达式的中的常量表达式的值都没有与开关表达式的值相匹配,则值都没有与开关表达式的值相匹配,则执行执行default后的语句,此选项亦可省略。后的语句,此选项亦可省略。C语言程序设计 第五章 选择结构程序设计说明说明switch后面括号内的表达式可以是任何后面括号内的表达式可以是任何类型。(若是实型数据,则将其转换为类型。(若是实型数据,
21、则将其转换为整型数据)整型数据)case 后的后的E1,E2,En是常量表达式,是常量表达式,在常量表达式中不允许出现变量;它们在常量表达式中不允许出现变量;它们必须是整型、字符型或枚举类型,不能必须是整型、字符型或枚举类型,不能是实型表达式是实型表达式(整型或字符型);每个整型或字符型);每个case后的常量表达式的值都必须各不相后的常量表达式的值都必须各不相同同各个各个case和和default的出现次序不影响执的出现次序不影响执行结果行结果C语言程序设计 第五章 选择结构程序设计case起到语句标号的作用,必须用起到语句标号的作用,必须用break跳出跳出case后可包含多个可执行语句,
22、且不必后可包含多个可执行语句,且不必加加 switch可嵌套可嵌套多个多个case可共用一组执行语句可共用一组执行语句如:如:case A:case B:case C:printf(“score60n”);break;.C语言程序设计 第五章 选择结构程序设计例、根据考试成绩的等级(例、根据考试成绩的等级(grade)打印)打印出百分制分数段:出百分制分数段:C语言程序设计 第五章 选择结构程序设计switch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);def
23、ault:printf(errorn);运行结果:运行结果:grade为为A时,时,输出:输出:85100 7084 6069 60 error!C语言程序设计 第五章 选择结构程序设计switch(grade)case A:printf(85100n);break;case B:printf(7084n);break;case C:printf(6069n);break;case D:printf(=0,则则 x1=,x2=delta=0)x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf(“x1=%.2f,x2=%.2fn”,x
24、1,x2);else re=-b/(2*a);im=fabs(sqrt(-delta)/(2*a);printf(“x1=%.2f+%.2fin”,re,im);printf(“x2=%.2f-%.2fin”,re,im);C语言程序设计 第五章 选择结构程序设计例例3运输公司对用户计算运费。路程运输公司对用户计算运费。路程(s)越远,每公里运费越低。)越远,每公里运费越低。距离距离S(公里)越远,折扣越高:(公里)越远,折扣越高:s250 没有没有折扣折扣250=s500 2%折扣折扣500=s1000 5%折扣折扣1000=s2000 8%折扣折扣2000=s3000 10%折扣折扣300
25、0=s 15%折扣折扣设基本运费为设基本运费为p计算公式:运费计算公式:运费=基本费基本费*重量重量*距离距离*(1-折扣)折扣)f=p*w*s*(1-d)C语言程序设计 第五章 选择结构程序设计main()int s;float p,w,d,f;scanf(%f,%f,%d,&p,&w,&s);if(s250)d=0;else if(s500)d=0.02;else if(s1000)d=0.05;else if(s2000)d=0.08;else if(s=3000)c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;c
26、ase 2:case 3:d=5;break;C语言程序设计 第五章 选择结构程序设计case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);printf(freight=%15.4f,f);C语言程序设计 第五章 选择结构程序设计例例4:输入年号:输入年号y,月份,月份m,输出该年该,输出该年该月天数。月天数。分析:分析:2月:闰年月:闰年29天,平年天,平年28天天;4,6,9,11月:月:30天天;1,3,5,
27、7,8,10,12月:月:31天天C语言程序设计 第五章 选择结构程序设计#include“stdio.h”void main()int y,m,days;printf(“Input year and month:”);scanf(“%d%d”,y,m);if(y10000)printf(“year isnt correct.n”);return;if(m12|m1)printf(“month isnt correct.n”);return;C语言程序设计 第五章 选择结构程序设计switch(m)case 2:if(!(y%4)&y%100|!(y%400)days=29;else days
28、=28;break;case 4:case 6:case 9:case 11:days=30;break;default:days=31;printf(“The number of days is%d.n”,days);C语言程序设计 第五章 选择结构程序设计课堂练习课堂练习1已有定义已有定义:int x=3,y=4,z=5;,则表;,则表达式达式!(x+y)+z-1&y+z/2的值是的值是A)B)C)D)DC语言程序设计 第五章 选择结构程序设计2有一函数有一函数 以下程序段以下程序段中不能根据值正确计算出值的是中不能根据值正确计算出值的是 -1 (x0)A)if(x0)y=1;else i
29、f(x=0)y=0;else y=-1;C)y=0;if(x=0);if(x0)y=1;else y=-1;B)y=0;if(x0)y=1;else if(x=0)if(x0)y=1;else y=0;else y=-1;CC语言程序设计 第五章 选择结构程序设计3有以下程序有以下程序,程序运行后的输出程序运行后的输出【3】main()int a=16,b=21,m=0;switch(a%3)case 0:m+;break;case 1:m+;switch(b%2)default:m+;case 0:m+;break;printf(“%dn”,m);3C语言程序设计 第五章 选择结构程序设计4
30、有以下程序有以下程序main()inti=1,j=1,k=2;if(j+k+)&i+)printf(%d,%d,%dn,i,j,k);执行后输出结果是执行后输出结果是A)1,1,2B)2,2,1C)2,2,2D)2,2,3 CC语言程序设计 第五章 选择结构程序设计5有以下程序有以下程序main()inta=5,b=4,c=3,d=2;if(abc)printf(%dn,d);else if(c-1=d)=1)printf(%dn,d+1);else printf(%dn,d+2)执行后输出结果是执行后输出结果是 A)2 B)3 C)4D)编译时有错,无结果编译时有错,无结果 BC语言程序设计
31、 第五章 选择结构程序设计6若有以下程序若有以下程序main()int a=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if(ab?(ac?a:c):(b);A)5B)4 C)6 D)不确定不确定 CC语言程序设计 第五章 选择结构程序设计8若有定义若有定义:float w;int a,b;则合法的则合法的switch语句是语句是A)switch(w)case 1.0:printf(*n);case 2.0:printf(*n);B)switch(a);case 1 printf(*n);case 2 printf(*n);C)switch(b)case 1:printf(
32、*n);default:printf(n);case 1+2:printf(*n);D)switch(a+b);case 1:printf(*n);case 2:printf(*n);default:printf(n);CC语言程序设计 第五章 选择结构程序设计9有如下程序有如下程序main0 int a=2,b=-1,c=2;if(ab)if(b0)c=0;else c+printf(“%dn”,c);该程序的输出结果是该程序的输出结果是 A)0 B)1 C)2 D)3 CC语言程序设计 第五章 选择结构程序设计10假假定定w、x、y、z、m均均为为int型型变变量量,有如下程序段:有如下程序段:w=1;x=2;y=3;z=4;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;则该程序运行后,则该程序运行后,m的值是的值是itA)4B)3C)2D)1 D