- 517.81 KB
- 2022-08-11 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
分支结构是三种基本结构之一,大多数程序中都会包含有分支结构。它的作用是:根据所指定的条件是否满足来决定所要执行的操作。在本章中,将介绍几种能实现判断、选择的语句以及如何利用这些语句来实现分支结构的C程序设计。概述\n①任何有效的表达式算术表达式、赋值表达式、关系表达式、逻辑表达式、字符表达式、条件表达式、逗号表达式;②任意类型的数据整型、实型、字符型、指针型等。4.1分支结构中的表达式\n关系运算是比较简单的一种逻辑运算,用关系运算符将两个表达式连接起来,就是关系表达式。关系表达式是由真(即非0值)或假(即0值)来表示其关系的;关系表达式的运算结果是:整数值1或整数值01true0false4.1.1C中的逻辑值\noperatorsnamenote>Greaterthana>b=Greaterthanorequaltoa>=b<=Lessthanorequaltoa<=b==Equala==b!=Notequala!=b4.1.2关系运算符与关系表达式关系运算符\n1、已知a=3,b=4则有c=a>b?c04.1.2关系运算符与关系表达式2、c=10!=9c1关系表达式\n逻辑运算是对两个关系式或逻辑式进行逻辑运算的,其运算结果:逻辑真,用整数“1”来表示;逻辑假,用整数“0”来表示。4.1.3逻辑运算符与逻辑表达式\noperatorsnamenotes!LogicalnotTRUEifthefollowingoperandisFALSE&&LogicalandTRUEifbothoperandsareTRUE||LogicalorTRUEifeitherorbothoperandsareTRUE4.1.3逻辑运算符与逻辑表达式逻辑运算符\noperatorsnamenote!LogocalnotTRUEifthefollowingoperandisFALSEa!aFALSETRUETRUEFALSE4.1.3逻辑运算符与逻辑表达式逻辑非运算符\noperatorsnamenote&&LogocalandTRUEifbothoperandsareTRUEaba&&bFALSEFALSEFALSETRUETRUEFALSETRUETRUEFALSEFALSEFALSETRUE4.1.3逻辑运算符与逻辑表达式逻辑与运算符\noperatorsnamenote||LogocalorTRUEifeitherorbothoperandsareTRUEaba||bFALSEFALSEFALSEFALSETRUETRUETRUEFALSETRUETRUETRUETRUE4.1.3逻辑运算符与逻辑表达式逻辑或运算符\n逻辑反逻辑与逻辑或!&&||说明:!当运算量为非零时,则运算结果为0;当运算量为零时,则运算结果为1;&&当两个运算量均为非零值时,则运算结果为1;否则运算结果为0。||当两个运算量只有一个为非零值时,则运算结果为1;只有当两个运算量均为0,则运算结果才为04.1.3逻辑运算符与逻辑表达式逻辑运算符\n逻辑反逻辑与逻辑或!&&||已知:(1)a=100,b=200求a&&b=?(2)a=-100,b=200求a&&b=?(3)a=0,b=200求a&&b=?(4)a=0,b=200求a||b=?(5)a=0,b=0求a||b=?(6)a=100求!a=?4.1.3逻辑运算符与逻辑表达式逻辑表达式\n条件运算是关系运算中的一种特殊运算形式,其运算结果取决于关系表达式中的非0值或0值。4.1.3逻辑运算符与逻辑表达式条件运算符\nNote:1、设e1,e2,e3分别为任意表达式;2、执行顺序:计算e1的值—(1)若为真(即非零值),再计算e2的值并把e2的值作为整个条件表达式的值(2)若为假(即零值),再计算e3的值并把e3的值作为整个条件表达式的值。operatorsnameOperatorsrule?:conditione1?e2:e34.1.3逻辑运算符与逻辑表达式条件运算符\n1、已知a=4,b=5则有max=(a>b)?a:b4.1.3逻辑运算符与逻辑表达式条件运算符max\n1、已知a=4,b=5则有max=(a>b)?a:b4.1.3逻辑运算符与逻辑表达式条件运算符max5\n1、已知a=4,b=5则有max=(a>b)?a:bmax52、已知a=1,b=2,c=3,d=4则有:a>b?a:c>d?c:d4.1.3逻辑运算符与逻辑表达式条件运算符\n1、已知a=4,b=5则有max=(a>b)?a:bmax52、已知a=1,b=2,c=3,d=4则有:a>b?a:c>d?c:d4.1.3逻辑运算符与逻辑表达式条件运算符上述表达式的值为:4\n上述表达式的值为:41、已知a=4,b=5则有max=(a>b)?a:bmax52、已知a=1,b=2,c=3,d=4则有:a>b?a:c>d?c:d3、已知a=2,c=‘a’,f=3.0则有:p=f==3.0?a<=c:a>=c4.1.3逻辑运算符与逻辑表达式条件运算符\n上述表达式的值为:41、已知a=4,b=5则有max=(a>b)?a:bmax52、已知a=1,b=2,c=3,d=4则有:a>b?a:c>d?c:d3、已知a=2,c=‘a’,f=3.0则有:p=f==3.0?a<=c:a>=c上述表达式p的值为:14.1.3逻辑运算符与逻辑表达式条件运算符\n4.1.4其他形式表达式自学\n4.2if语句if语句是用来判断所给定的条件是否满足,根据判定的结果(真或假)来决定执行给出的两种操作之一。语句功能:当表达式的值为真(即非零值)时,执行该语句。语句格式:if(表达式)语句;为任意表达式只为一条语句否则可为复合语句\n输入a与b两个值,若a>b则输出a。请根据程序流程图编写代码.BeginEnd输出a输入a,ba>bTFmain(){inta,b;scanf(“%d,%d\n”,&a,&b);if(a>b)printf(“%d\n”,a);}关系表达式4.2.1if语句的三种形式if单分支\n#includemain(){chara,b,c;a='x';b='b';if((a=b)>0)c=a;printf("%d\n",c);}赋值表达式4.2.1if语句的三种形式if单分支\nBegin输入a,b,camain(){inta,b,c,t;scanf("%d%d%d",&a,&b,&c);if(ab则输出a,否则输出b。BeginEnd输出m输入a,ba>bFm=bm=aT#includemain(){inta,b,m;scanf(“%d%d”,&a,&b);if(a>b)m=a;elsem=b;printf(“%d\n”,m);}4.2.1if语句的三种形式if–else双分支\n语句功能:语句格式:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……else语句n;(elseif结构)用于实现多分支情况的处理。即在多个分支中仅执行表达式为非0值的那个if下的语句;若所有表达式都是0值,则执行最后一个else下的语句。4.2.1if语句的三种形式elseif多分支\n#includemain(){intg;scanf("%d\n",&g);if(g<60)printf("不及格");elseif(g<70)printf("及格");elseif(g<80)printf("中");4.2.1if语句的三种形式elseif多分支elseif(g<90)printf("良好");elseif(g<=100)printf("优秀");elseprintf("数据无效");}\nx(x<1)y=2x-1(1≤x<10)3x-11(x≥10)请用if/else-if格式设计并实现求解下列问题的算法:4.2.1if语句的三种形式elseif多分支#includemain(){intx;floaty;scanf("%d\n",&x);if(x<1)y=x;elseif((x>=1)&&(x<10))y=2*x-1;elsey=3*x-11;printf("x=%d,y=5.2f\n",x,y);}\nEXAMPLE[3-3]:……intx=1,y=2,z=3;if(x=y+z)printf(“*****”);elseprintf(“#####”);……2、“=”与“==”的差别*****……intx=1,y=2,z=3;if(x==y+z)printf(“*****”);elseprintf(“#####”);……#####4.2.1if语句的三种形式elseif多分支\n#includemain(){inta,b,c,x;a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;printf(“%d\n”,x);}x353444.2.1if语句的三种形式elseif多分支\n在书店买书,以100本为限。如果买1本不打折扣;买2本打折10%;买3本折扣为15%买3本以上折扣为20%。设书本数为x,单价为20.00元。请用程序流程图描述算法,用C实现算法。4.2.1if语句的三种形式elseif多分支\nif(表达式)if(表达式1)语句1;else语句2;elseif(表达式2)语句3;else语句4;NOTE:在多个if-else嵌套中,else-if配对关系不能弄错。一个else应与它最近的一个且没有其它else配对的if组成配对关系。4.2.2if语句的嵌套\n#includemain(){intx;floaty;scanf("%d\n",&x);if(x!=0)if(x>0)y=1;elsey=-1;elsey=0;printf("x=%d,y=f\n",x,y);}-1(x<0)y=0(x=0)1(x>0)4.2.2if语句的嵌套\n请写出下列源程序的运行结果4.2.2if语句的嵌套#includemain(){intx,a,b,ok1,ok2;x=100;a=10;b=20;ok1=5;ok2=0;if(amain(){intg;charch;scanf("%d\n",&g);switch(g/10){case10:case9:ch='A';break;case8:ch='B';break;case7:ch='C';break;case6:ch='D';break;default:ch='E';}printf("%c\n",ch);}\n请设计一个数制转换的C语言源程序。要求:能进行如下的数制转换。10进制转换为16进制;16进制转换为10进制;10进制转换为8进制;8进制转换为10进制;4.3switch语句\n进制转换菜单1、10进制转换为16进制;2、16进制转换为10进制;3、10进制转换为8进制;4、8进制转换为10进制;请输入您的选择:再输入转换数据:1214.3switch语句\nEXAMPLE[3-3]:Importantpoints:if语句switch语句小结\nifif(表达式)语句;if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……else语句n;if(表达式)语句1;else语句2;if(表达式)if(表达式1)语句1;else语句2;elseif(表达式2)语句3;else语句4;小结\nswitchswitch(表达式){case常量表达式1:语句组1;break;case常量表达式2:语句组2;break;……case常量表达式n:语句组n;break;default:语句组n+1;}小结