C程序设计ch04判定、分支和循环.ppt

上传人:max****ui 文档编号:6331353 上传时间:2020-02-23 格式:PPT 页数:69 大小:759.31KB
返回 下载 相关 举报
C程序设计ch04判定、分支和循环.ppt_第1页
第1页 / 共69页
C程序设计ch04判定、分支和循环.ppt_第2页
第2页 / 共69页
C程序设计ch04判定、分支和循环.ppt_第3页
第3页 / 共69页
点击查看更多>>
资源描述
第四章判定 分支和循环 4 1C语句概述C语句 以 作分隔符 编译后产生机器指令 C语句分类表达式语句 表达式加分号构成 空语句 程序控制语句 9种 如total total limit a 3 func printf Hello world n 复合语句 用 括起来的一组语句一般形式 数据说明部分 执行语句部分 说明 后不加分号语法上和单一语句相同复合语句可嵌套 三种基本结构顺序结构 选择结构 二分支选择结构 多分支选择结构 循环结构 当型循环结构 直到型循环结构 注 A B A1 An可以是一个简单语句 也可以是一个基本结构 4 2分支简单if语句 p111 115 格式 if expression statement执行过程 例 if x y printf d x 例读入a b c d四个整数 输出 a b c d if c d 0 ratio float a b c d printf Ratio f n ratio absolutevalue includemain intx y printf Enteraninteger scanf d 例求一个数的绝对值 运行 Enteraninteger 12 integer 12 absolutevalue 12 abs intn labs long fabs doublex cabs complexz if else语句p115格式 if expression statement1elsestatement2执行过程 例if c d 0 ratio float a b c d printf Ratio f n ratio elseprintf c diszero n 例if x y max x elsemax y 转为表达式 max x y x y这里引入了运算符 p129条件运算符 条件运算符与表达式一般形式 expr1 expr2 expr3执行过程功能 相当于条件语句 但不能取代一般if语句 例求a b printf a b d n b 0 a b a b 例 a b Y N x 2 1 1 0 x 0 x x c a c z c a A c 条件运算符可嵌套如x 0 1 x 0 1 0 优先级 13 结合方向 自右向左如a b a c d c d a b a c d c d expr1 expr2 expr3类型可不同 表达式值取较高的类型 例x a b x 0 表达式值为 b x 0 表达式值为 a x y 1 1 5 x y 值为1 0 x y 值为1 5 elseif梯状p122格式 if expr1 statement1elseif expr2 statement2elseif expr3 statement3 elsestatementn 执行过程 if value 1000 takeoff 0 25 elseif value 800 takeoff 0 2 elseif value 600 takeoff 0 15 elseif value 400 takeoff 0 1 elsetakeoff 0 例百分制成绩转换为五级制p12280to100Honours60to79FirstDivision50to59SecondDivision40to49ThirdDivision0to39Fail例累进电费p124 例根据收入计算应缴个税 2000元起征0 不超过500的5 超过500 2000的部分10 超过2000 5000的部分15 超过5000 20000的部分20 超过20000 40000的部分25 超过40000 60000的部分30 超过60000 80000的部分35 超过80000 100000的部分40 超过100000的部分45 Tax Income Base 对应税率 对应速算扣除额 如Income 8000500 5 1500 10 3000 15 8000 7000 20 8000 2000 20 5000 20 如 if a b 说明 if后面的表达式类型任意 语句可以是复合语句if x if x 0 if x if x 0 例考虑下面程序的输出结果 includemain intx y scanf d d CompileError Beequalornot includemain inta b printf Enterintegera scanf d 例输入两个数并判断两数相等否 运行 Enterintegera 12 Enterintegerb 12 a b 运行 Enterintegera 12 Enterintegerb 9 a b chartype includemain charc printf Enteracharacter c getchar if c 0 例判断输入字符种类 运行 Enteracharacter Thecharacterisacontrolcharacter 运行 Enteracharacter 8 Thecharacterisadigit 运行 Enteracharacter D Thecharacterisacapitalletter 运行 Enteracharacter h Thecharacterisalowerletter 运行 Enteracharacter F1 Thecharacterisothercharacter include ctype h iscntrl isalpha isdigit ispunct isprint islower isupper isalnum if语句嵌套p118一般形式 例输入两数并判断其大小关系 GreaterorLess includemain intx y printf Enterintegerx y scanf d d 运行 Enterintegerx y 12 23 XYEnterintegerx y 12 12 X Y if else配对原则 缺省 时 else总是和它上面离它最近的未配对的if配对 例 if a b if b c printf a b c elseprintf a b 修改 if a b if b c printf a b c elseprintf a b 实现if else正确配对方法 加 例考虑下面程序输出结果 main intx 100 a 10 b 20 intv1 5 v2 0 if a b if b 15 if v1 x 1 elseif v2 x 10 x 1 printf d x 结果 1 4 3switch语句 开关分支语句 p125一般形式 执行过程 switch 表达式 caseE1 语句组1 break caseE2 语句组2 break caseEn 语句组n break default 语句组 break 说明 E1 E2 En是常量表达式 且值必须互不相同语句标号作用 必须用break跳出case后可包含多个可执行语句 且不必加 switch可嵌套多个case可共用一组执行语句 如 case A case B case C printf score 60 n break 例switch score case5 printf Verygood case4 printf Good case3 printf Pass case2 printf Fail default printf dataerror 运行结果 score为5时 输出 Verygood Good Pass Fail dataerror 例voidmain intx 1 y 0 a 0 b 0 switch x case1 switch y case0 a break case1 b break case2 a b break case3 a b printf na d b d a b 运行结果 a 2 b 1 SelectLabel includemain intc printf Entermornorhorother c getchar switch c case m printf nGoodmorning n break case n printf nGoodnight n break case h printf nHello n break default printf n n break 例根据输入字母输出字符串 例百分制成绩转换为五级制p12280to100honours60to79FirstDivision50to59FirstDivision40to49FirstDivision0to39FirstDivision用SwitchStatement 4 4循环概述C语言可实现循环的语句 用goto和if构成循环while语句do while语句for语句goto语句一般格式p132 功能 无条件转移语句说明 不能用整数作标号只能出现在goto所在函数内 且唯一只能加在可执行语句前面限制使用goto语句 例用if和goto语句构成循环 求1 2 100 loopusinggotostatement includemain inti sum 0 i 1 loop if i 100 sum i i gotoloop printf d sum sum 0 1sum 1 2 3sum 3 3 6sum 6 4 sum 4950 100 5050 例从键盘输入一组数据 以0结束输入 求数据和 sumofdata includemain intnumber sum 0 read loop scanf d 例输入10个男孩的身高和体重 统计身高超过170体重少于50公斤的人数 例pp135RANGEofNumbers Asurveyofthecomputermacketshowthatpersonalcomputersaresoldatvaryingcostsbythevendors Thefollowingisthelistofcosts inhundreds quotedbysomevendors 35 00 40 50 25 00 31 25 68 15 47 00 26 65 29 00 53 45 62 50Determinetheaveragecostandtherangeofvalues 例pp136Pay BillCalculations Readanexecutive sjobnumber levelnumber andbasicpayandthencomputerthenetsalaryafterwithholdingincometax Theproblemisdetailedintheprogram while语句p147一般形式 while 表达式 循环体语句 执行流程 特点 先判断表达式 后执行循环体说明 循环体有可能一次也不执行循环体可为任意类型语句下列情况 退出while循环条件表达式不成立 为零 循环体内遇break return goto无限循环 while 1 循环体 例用while循环求1 2 100 sumof1to100 includemain inti sum 0 i 1 while i 100 sum sum i i printf d sum 例显示1 10的平方 squareofeverynumber includemain inti 1 while i 10 printf d d d n i i i i i 运行结果 1 1 12 2 43 3 94 4 165 5 256 6 367 7 498 8 649 9 8110 10 100 do while语句p150一般形式 do循环体语句 while 表达式 执行流程 特点 先执行循环体 后判断表达式说明 至少执行一次循环体do while可转化成while结构 例用do while循环求1 2 100 includemain inti sum 0 i 1 do sum i i while i 100 printf d sum 例while和do while比较 includemain inti sum 0 scanf d includemain inti sum 0 scanf d for语句p152一般形式 for expr1 expr2 expr3 循环体语句 执行流程 for语句一般应用形式 for 循环变量赋初值 循环条件 循环变量增值 循环体语句 说明 for语句中expr1 expr2 expr3类型任意 都可省略 但分号 不可省无限循环 for for语句可以转换成while结构 expr1 while expr2 循环体语句 expr3 温故 逗号运算符p154 例用for循环生成10个随机数并累加 include include includemain inti tmp sum 0 Seedtherandom numbergeneratorwithcurrenttimesothatthenumberswillbedifferenteverytimewerun srand unsigned time NULL for i 1 i 10 i tmp rand sum tmp printf d n n sum include include includemain inti sum srand unsigned time NULL for sum 0 i 1 i 100 i sum rand printf d n n sum 各人各次运行结果不一 逗号运算符和表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例a 3 5 a 4a 3 5 a 4 a 5例x a 3 6 3 x a 3 6 a例a 1 b 2 c 3 printf d d d a b c printf d d d a b c b c a 15 表达式值60 a 15 表达式值20 赋值表达式 表达式值18 x 18 逗号表达式 表达式值18 x 3 1 2 3 3 2 3 例 includemain inti for i 0 i 10 i putchar a i 运行结果 abcdefghij 例 includemain inti 0 for i 10 i putchar a i 例 includemain inti 0 for i 10 putchar a i 例 includemain inti 0 for i 10 putchar a i i 灵活应用for语句 main inti j k for i 0 j 100 i j i j k i j printf d d d n i j k includemain charc for c getchar n printf c c includemain inti c for i 0 c getchar n i 3 printf c i c 例p161求1 1 x 1 x x2 x3 xn x 1 算到通项小于0 0001 include stdio h intmain floatsum 1 x term printf Inputthevalueofx scanf f 这个例子若x的值超过1 则出现列循环 例梯形法求数值积分 循环的嵌套p156三种循环可互相嵌套 层数不限外层循环可包含两个以上内循环 但不能相互交叉嵌套循环的执行流程 1 while while 2 do do while while 3 while do while 4 for do while while 内循环 内循环 嵌套循环的跳转禁止 从外层跳入内层跳入同层的另一循环向上跳转 例循环嵌套 输出九九表p151 MultiplicationTable includemain inti j for i 1 i 10 i printf 4d i printf n n for i 1 i 10 i for j 1 j 10 j printf j 9 4d n 4d i j for i 1 i 10 i for j 1 j 10 j printf j 9 4d n 4d i j 下面这个例子既是循环语句的应用 也比较充分体现计算机的强大的逻辑运算能力 例有红 黄 兰 白 紫色的珠子分别放在 个包里 甲说 第二个包是紫色珠子 第四个包是黄色珠子 乙说 第一个包是红色珠子 第五个包是白色珠子 丙说 第三个包是白色珠子 第四个包是兰色珠子 丁说 第二个包是黄色珠子 第五个包是紫色珠子 每个人都说对一句 说错一句 各个包里的珠子分别是什么颜色的 编制求解程序 4 5辅助控制语句p159 165break语句p159功能 在循环语句和switch语句中 终止并跳出循环体或开关体说明 break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中 例break举例 输出圆面积 面积大于100时停止 definePI3 14159main intr floatarea for r 1 r100 break printf r d area 2f n r area 例break举例 小写字母转换成大写字母 直至输入非字母字符 includemain inti j charc while 1 c getchar if c a include stdio h compute1 1 x intmain floatsum x term intn printf Inputthevalueofx scanf f break用到前面的例子 为解决列循环 却不方便 求1 1 x 1 x x2 x3 xn x 1 算到通项小于0 0001 continue语句p163功能 结束本次循环 跳过循环体中一部分尚未执行的语句 进行下一次是否执行循环体的判断仅用于循环语句中 例求输入的十个整数中正数的个数及其平均值 usingcontinuestatement includemain inti num 0 a floatsum 0 for i 0 i 10 i scanf d 程序举例 分子 1 1 1 1 分母 1 3 5 7 例求Fibonacci数列 1 1 2 3 5 8 的前40个数 例判断m是否素数 例简单密码系统 例如Hello world 译成密码 Lipps asvph 解码 例pp168BonomialCoeffcientsareusedinthestudyofbonomialdistributions ItisgivenbyB m x m x m x m xAtableofbonomialCoeffcientsisrequiredtobeprintedasfollows Mx012345678910 011112121313314146415151010516161520156171721353521718182856705628819193684126126843691101104512021025221012045101ProblemAnalysis B m 0 1 B m x B m x 1 m x 1 x x 1 2 3 mB 0 0 1 例pp169Inanorganization theemployeesaregroupedaccordingtotheirbasicpayforpurposeofcertainperks Thepay rangeandthenumberofemployeesineachgroupareasfollows GROUPPAY RANGENUMBEROFEMPLOYEES1750 15001221501 30002333001 45003544501 6000205above600011Drawahistogramtohighlightthegroupsizes 例pp171MinimumCost ThecostofoperationofaunitconsistsoftwocomponentsC1andC2whichcanbeexpressedasfunctionsofaparameterpasfollows C1 30 8pC2 10 p2Theparameterprangesfrom0to10 Determinethevalueofpwithanaccuracyof 0 1wherethecostofoperationwouldbeminimum ProblemAnalysis Totalcost C1 C2 40 8p p2Thecostis40whenp 0 and33whenp 1and60whenp 10 Thecost therefore decreasesfirstandthenincreases 例pp172PlottingofTwoFunctions y1 exp ax y2 exp ax2 2 xvaryingfrom0to5 0ProgramAnalysis Initiallywhenx 0 y1 y2 1andthegraphsstartfromthesamepoint Thecurvescrosswhentheyareagainequalatx 2 0 Theprogramshouldhaveappropriatebranchstatementstoprintthegraphpointsatthefollowingthreecondition 1 y1 y22 y1 y23 y1 y2Thefunctionsy1andy2arenormalizedandconvertedtointgersasfollows y1 50exp ax 0 5y2 50exp ax2 2 0 5
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!