您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计_模块二分支程序设计训练
知识准备任务引例----比较两个数的大小。#includestdio.hvoidmain(){floata,b;printf(请您输入两个实数:\n);scanf(%f,%f,&a,&b);if(ab)printf(第一个数较大。\n);elseif(a==b)printf(两个数相等。\n);elseprintf(第二个数较大。\n);}程序清单程序运行请您输入两个实数:4,8第二个数较大。做中学2-1两个数的升序排序。2.1if-else语句2.1.1单分支结构的if语句算法设计定义三个变量a,b,t,从键盘给a、b赋值。使用if语句判断a和b大小,如果ab,交换a、b的值,算法见右图。结束程序运行请输入两个实数:4.4,2.32.304.40知识点语法格式:if(条件表达式)语句;单分支结构执行过程:单分支结构if语句的执行过程如图2-2所示,首先对表达式求解,当结果为真(非0)时,则执行指定的语句;否则跳过指定语句,接着执行该语句下面的语句。语法特征为:一个条件表达式,一个可选执行。图2-2if单分支结构B做中学2-2求绝对值。算法设计定义两个变量x,y,从键盘读值给x。如果x0,y赋值为-x;否则,y赋值为x。算法见图2-3。2.1.2双分支结构的if-else语句结束#includestdio.hvoidmain(){intx,y;printf(输入一个整数:);scanf(%d,&x);if(x0)/*判断x0是否成立*/y=-x;else/*若x0的值为假*/y=x;printf(这个数的绝对值是:%d\n,y);}程序清单程序运行输入一个整数:-5这个数的绝对值是:5知识点语法格式:if(条件表达式)语句1;else语句2;双分支结构执行过程:语法特征:一个条件表达式,两个可选执行。B做中学2-3某运输公司对用户收取运费的规定如下(s表示里程数km):S<2500(没有折扣)250≤s<5002%500≤s<10005%1000≤s<20008%2000≤s<300010%3000≤s15%设基本运费为每公里每吨p元,货物重为w吨,折扣为d,总运费f的计算公式为f=p×w×s×(1-d)2.2switch-case语句算法设计通过分析上述数据可以看到,d随着s的增加而增加,有一定规律。s的每个取值范围,要么增加250,或者500,或者1000,均是250的倍数。我们可将公司对用户收取运费的规定理解如下表距离s折扣率d距离s折扣率ds<25001750≤s<20008%250≤s<5002%2000≤s<225010%500≤s<7505%2250≤s<250010%750≤s<10005%2500≤s<275010%1000≤s<12508%2750≤s<300010%1250≤s<15008%3000≤s15%1500≤s<17508%#includestdio.hvoidmain(){intc,s;floatp,w,d,f;printf(请输入每公里运价(元/吨*公里),货物重量(吨),运输里程(公里):);scanf(%f,%f,%d,&p,&w,&s);if(s=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;default:printf(输入里程有错!\n);}f=p*w*s*(1-d/100.0f);printf(应缴运费:%15.4f\n,f);}程序运行请输入每公里运价(元/吨*公里),货物重量(吨),运输里程(公里):0.2,30,1200应缴运费:6624.0001知识点使用switch-case语句可以实现多分支选择结构,流程图如图2-5所示。图2-5switch语句流程图知识点语法格式:switch(表达式){case常量1:语句1;case常量2:语句2;┇case常量n:语句n;[default:语句n+1;]}switch-case语句使用说明:表达式可以为任何整数类型。各个常量取不同的值。表达式的值与某个case后的常量的值相等,就执行此常量后面的语句。如果表达式的值没有和任何常量相匹配,就执行default后面的语句。如果省略了default语句,则不作任何处理,执行switch结构后面的语句。如果在相匹配case的语句块中没有break语句,程序从此开始顺序执行,直到遇到某个case子句中的break语句,才跳出switch结构。否则,一直执行到switch语句结束。因而多个case可以共用同一组执行语句。如,case8:case9:case10:case11:d=10;break;case后面必须是常量表达式,表达式中不能包含变量。如,不能写成caseb。default出现的位置不影响程序执行结果。所以可先出现default子句,再出现各case子句。语法特征为:一个表达式的值,对应n个常量表达式的值。边学边练实现英寸与厘米的换算。求方程ax2+bx+c=0的解。菜单程序设计。输入年份,判断是否为润年。三个数排序(升序)。根据利润计算工资。拓展提升2.3多分支结构的if-else语句对于双分支结构的if语句,若它的子句(语句1或语句2)也是if语句,就出现了if语句的嵌套。执行过程见图2-8。图2-8多路分支选择结构做中学2-4分段函数计算。算法设计程序的功能为根据自变量x的取值范围,选择不同的数值表达式计算出y的值,并输出。x有四个范围,可构成3个条件表达式,4个可选分支的结构,流程图右图编程实现多值函数的功能)0或100(0)10020(3)2010(2)100(xxxxxxxxy结束#includestdio.hvoidmain(){intx,y;printf(请输入一个整数:);scanf(%d,&x);if(x0&&x=10){/*如果满足条件0x=10*/y=x;printf(x∈(0,10],y=%d\n,y);}elseif(x10&&x20){/*如果满足条件10x20*/y=2*x;printf(x∈(10,20),y=%d\n,y);}elseif(x=20&&x100){/*如果满足条件20=x100*/y=3*x;printf(x∈[20,100),y=%d\n,y);}else{y=0;printf(x的值太大或太小!y=%d\n,y);}}程序清单程序运行第一次运行请输入一个整数:5x∈(0,10],y=5第二次运行请输入一个整数:15x∈(10,20),y=30第三次运行请输入一个整数:30x∈[20,100),y=90第四次运行请输入一个整数:120x的值太大或太小!y=0知识点语法格式:if(条件式1)语句1;elseif(条件式2)语句2;elseif条件式3)语句3┇elseif(条件式n)语句n;else语句n+1;执行过程:首先求解表达式l的值,若为“真”,执行语句1;否则求解表达式2的值,若为“真”,执行语句2;否则继续求解表达式3,若为“真”,执行语句3;否则接着进行判断,依此类推,直到找到结果为“真”的表达式,并执行与之相关的语句。如果经过求解,所有的表达式都为“假”,那么就执行最后一个else后面的语句。注意每一个else是和其前面最接近的if配对使用。做中学2-5运输公司对用户的运费计算(与做中学2-3相同)。算法设计高折扣率可以在低折扣率基础上加上一个常数得到。假设折扣率2%用d2表示、折扣率5%用d5表示、折扣率8%用d8表示、折扣率10%用d10表示、折扣率15%用d15表示,则可以得到下表。2.4switch-case语句的巧用距离s折扣率d折扣率d计算常数s<250d0=0d0=d0+00250≤s<500d2=2%d2=d0+22500≤s<1000d5=5%d5=d2+331000≤s<2000d8=8%d8=d5+332000≤s<3000d10=10%d10=d8+223000≤sd15=15%d15=d10+55即d15=d10+5=d8+2+5=d5+3+2+5=d2+3+3+2+5=d0+2+3+3+2+5。#includestdio.hvoidmain(){intc,s;floatp,w,d,f;printf(请输入每公里运价(元/吨*公里),货物重量(吨),运输里程(公里):);scanf(%f,%f,%d,&p,&w,&s);d=0;if(s=3000)c=12;elsec=s/250;switch(c){case12:d+=5;case11:case10:case9:case8:d+=2;case7:case6:case5:case4:d+=3;case3:case2:d+=3;case1:d+=2;case0:d+=0;}f=p*w*s*(1-d/100.0f);printf(“应缴运费:%15.4f”,f);}程序清单程序运行请输入每公里运价(元/吨*公里),货物重量(吨),运输里程(公里):0.2,30,1200应缴运费:6624.0001总结归纳单分支结构双分支结构多分支结构选择结构多重嵌套语法特征执行过程
本文标题:C语言程序设计_模块二分支程序设计训练
链接地址:https://www.777doc.com/doc-3969016 .html