C语言快速入门程序控制结构PPT课件_第1页
C语言快速入门程序控制结构PPT课件_第2页
C语言快速入门程序控制结构PPT课件_第3页
C语言快速入门程序控制结构PPT课件_第4页
C语言快速入门程序控制结构PPT课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2 5程序控制结构 C语句概述 C语句分为 5类 控制语句函数调用语句表达式语句空语句复合语句 C语言的语句 statement 以 作分隔符 编译后产生机器指令 C语句概述 一 控制语句 完成一定的控制功能1if else条件语句6break间断语句2for 循环语句7switch 开关语句3while 循环语句8goto转向语句4do while 循环语句9return返回语句5continue继续语句 二 函数调用语句有一个函数调用加一个分号构成一个语句printf ThisisaCstatement 例 C语句概述 三 表达式语句有一个表达式加一个分号构成一个语句 C语句概述 四 空语句 只有一个分号的语句 什么也不做 用来做流程的转向点用来作为循环语句中的循环体 C语句概述 五 复合语句用一对 括起来的语句 z x y t z 100 printf f t 例 C语句概述 B A 2 6顺序结构 include includevoidmain floata b c s area scanf f f f 输入 346 输出 a 3 00 b 4 00 c 6 00s 6 50area 5 33 例 输入三角形的三边长 求三角形面积 其中s a b c 2 顺序结构程序中语句自上而下顺序执行 无分支 无转移 无循环 例 交换a b的值 设一个中间变量t暂存数据 其操作步骤为 1 将a存入t 语句为t a 2 将b赋给a 语句为a b 3 将t赋给b 原来a的值 语句为b t 正确的交换方法 t a a b b t 不能只写下面两个赋值语句a b b a a b t b a a b t a b t a b t a b t a b t a b t 2 7选择结构 如果没有条件判断语句 世界上最先进的计算机也只是一个计算器 选择结构使得计算机表现出具有智能 1 基本选择结构 if else结构 表2 11 选择结构的基本编程模式 B N A Y 条件P 分支结构 选择结构 includevoidmain inta b t scanf d d 例 将二数 a b 中的大数存放到a中 510a 10 b 5 分析 假设有三个数a b c 用变量max3表示三个数中的最大的数 将三个数分成两组 a b为一组 c为一组 先求a b中的最大数 如果a b 则max3 a 否则max3 b 将a b的最大数max3与c比较 如果max3 c 则max3就是三个数中的最大数 否则c是三个数中的最大数 max3 c 例2 9 从键盘任意输入三个数 输出三个数中最大的数 includevoidmain floata b c max3 printf 输入三个数a b c scanf f f f 例2 9 从键盘任意输入三个数 输出三个数中最大的数 输入三个数a b c 345max3 5 000000 2 条件表达式 含义 如果表达式1的值非0 为真 则该条件表达式的结果就是表达式2的值否则 是表达式3的值 表达式3 N 表达式2 Y 表达式1 例 输入一个英文字母 判断是否为英文大写字母 若是大写字母直接输出 否则转换成大写字母输出 includevoidmain charch scanf c aA AA 3 多分支选择结构 多路选择switch 表达式 case常量表达式1 语句序列1 case常量表达式2 语句序列2 default 语句序列n default可以没有 但最好不省略不要忘记break 该结构是n个条件控制n 1个语句 根据条件选择执行哪个 可以是复合语句 语句 如果所有条件都不满足 则执行第n 1个语句 3 多分支选择结构 1 switch后的表达式可以为任何具有整型值的 表达式 2 关键字case后的整型常量表达式的值是整型 注意各case后的整型常量表达式之值必须互不相同 3 语句组 可以是一条或多条合法的 语句 但必将它们放在一个复合语句中 4 break是C语言的一种语句 其功能是中断正在执行的语句 在switch语句中的作用是 执行完某个语句组后 将退出该switch语句 如果省略了break语句 则执行完某个语句组后 将继续执行其后边的语句组 3 多分支选择结构 例 将百分制成绩分段 includevoidmain ints scanf d switch s 10 case1 case2 case3 case4 case5 printf E n break case6 printf D n break case7 printf C n break case8 printf B n break case9 default printf A n 95A voidmain floatscore chargrade printf 请输入成绩 scanf f 请输入成绩 95 5成绩是95 5 相应等级是A 例2 13 分析下面程序段中的错误 floatx 2 inta 3 b 1 switch 2 x case2 5 printf f 2 x break casea b printf d a b case2 3 4 printf d d d 2 3 4 错误 2 x是浮点型表达式 错误 2 5是浮点常量表达式 错误 a b是不是整型常量表达式 因为a b是变量 错误 case子句只能有一个常量表达式 2 8循环结构 我们之所以感到计算机无所不能 是因为计算机能不厌其烦地重复大量枯燥的工作 计数控制 标记控制 循环结构术语 循环条件 结构中的测试表达式循环体 每个循环周期均要执行的语句序列循环控制变量 控制条件真 假值的变量 对循环控制变量应做如下处理 赋初值 将其代入正确的循环条件 更新 调整 累加型 计算1 2 3 n 通项公式 累乘型 计算n 1 2 3 n 通项公式 s 0 for i 1 i n i s s i p 1 for i 1 i n i p p i 注意 整型定义为long或unsignedlong型 智人之法 归纳法 递推法 s 1 1 2 2 3 3 循环结构的应用场合 1 1 2 2 3 3 s 1 1 2 2 100 100 1 1 2 2 99 99 100 100 for i 1 s 0 i 100 i s i i 1 for循环结构 for 表达式1 表达式2 表达式3 语句 首先执行表达式1 如果表达式2的值为非0 就重复执行语句和表达式3 直到表达式2的值为0时止 循环起始条件 循环结束条件 循环增量 for循环的一般格式 for 表达式1 表达式2 表达式3 S includevoidmain inti sum 0 for i 1 i 100 i sum i printf sum d i d n sum i sum 5050 i 101 例 用for循环求s 1 2 3 100 includemain inti n s printf 输入自然数n scanf d for循环结构 输入自然数n 99前99个自然数的和 4950 A 条件P A 当型循环 直到型循环 真 假 假 条件P 假 真 2 while do while循环结构 voidmain inti 1 sum 0 while i 100 sum sum i i printf sum d t sum printf i d i 注意 1 如果语句超过一个 则必须用 构成复合语句2 注意修改循环变量的语句 sum 5050i 101 例 用while循环求s 1 2 3 100 counter 1 sum 0 counter 6 sum sum n false true counter outputsum inputn 1 counter sum 0 1 6true 2 n 0 2 2 2 2 6true 3 2 3 5 3 3 6true 4 5 4 9 4 4 6true 5 9 5 14 5 5 6true 6 14 6 20 6 6 6false Thisloopiscounter controlled Thecounterincreasesby1 Usesonly3variables Assumeinputexample 23456 计数控制的循环 voidmain intcounter 1 sum 0 n while counter 6 scanf d 注意 counter不参加运算 counter控制重复运算的次数counter可以修改 保证执行5次 例 求从键盘上任意输入5个数的和 23456sum 20 i 0 sum 0 i 5 sum sum x false true i outputsum inputx intx sum i sum 0 for i 0 i 5 i scanf d printf d sum voidmain intsum x sum 0 scanf d 0 1 1 1 0 0 1 1 13 3 3 0 1 3 4 1323 23 23 0 4 23 27 1323 9 9 9 0 Thesum 27 标记控制的循环 voidmain 循环嵌套与多重循环 在一个循环的循环体内又包含另一个循环 称为循环嵌套 两层循环嵌套结构称为双层循环 两层以上的嵌套结构 则称为多重循环 循环的嵌套 多重循环 for h 0 h 23 h for m 0 m 59 m for s 0 s 59 s 3 循环辅助语句 breakstatement printf Inputavaluebetween1 7 scanf d value i i 7 i value Inputavaluebetween1 7 Inputavaluebetween1 7 4 1 1 7true 1 4false 4 Inputavaluebetween1 7 41 2 2 7true 2 4false Inputavaluebetween1 7 412 3 3 7true 3 4false Inputavaluebetween1 7 4123 4 4 7true 4 4true Inputavaluebetween1 7 5123I moutoftheloop Nowwhatcanyouconcludeaboutbreak break 退出一层循环或switch continuestatement Example for i 0 i 5 i if i 2 continue elseprintf disanevennumber i printf Printiffeven n ii 5i 2 0 0 5true 0 1 5true 1 2 5true 3 5true 4 5true 5 5true 1 6 5false 2 3 4 1 0 1 0 0isanevennumber 0isanevennumber Printiffeven 0isanevennumber Printiffeven 2isanevennumber 0isanevennumber Printiffeven 2isanevennumber Printiffeven 0isanevennumber Printiffeven 2isanevennumber Printiffeven 4isanevennumber 0isanevennumber Printiffeven 2isanevennumber Printiffeven 4isanevennumber Printiffeven Nowwhatcanyouconcludeaboutcontinue continue 中断此次循环体的执行 开始下一次 5 6 includemain inti n for i 1 i 5 i printf Pleaseentern scanf d Pleaseentern 10 n 10Pleaseentern 10 Programisover break语句的用法 includemain inti n for i 1 i 5 i printf Pleaseentern scanf d Pleaseentern 10 n 10Pleaseentern 10 Pleaseentern 20 n 20Pleaseentern 20 Pleaseentern 30 n 30Programisover continue语句的用法 说明 1 break语句可用于switch语句结构中也可用于循环中 2 continue语句只可用于循环中 3 在循环嵌套中break与continue都只影响包含它的那层循环4 少用为妙 习题2 28 选择下面程序的运行结果 includevoidmain void inti for i 1 i 5 i if i 2 printf elsecontinue printf printf n A B C D 一般形式 goto语句标号 语句标号 或语句标号 goto语句标号 4 goto语句 voidmain inti s i 1 s 0 loop 标号作用 if i 100 s i i gotoloop printf d n s 5050 通常goto语句与if条件语句连用 例 用goto语句求s 1 2 3 100 是goto的过错 还是程序员的过错 破坏了结构化设计风格容易带来错误隐患gotonext intsum 0 被goto跳过 next Evilgoto s MaybeNot 凌波微步 未必摔跤 现代观点认为 混乱根源不在goto 而在标号任何程序都可以不用goto就实现其功能但在某些情况下 使用goto可以让程序更清晰两种适合使用goto的情况跳向共同的出口位置 进行退出前的处理工作跳出多重循环的一条捷径 gotoerror 使用goto的原则 主张少用 慎用 而不是禁用保证使用之后 程序仍然是单入口 单出口不要使用一个以上的标号不要让goto制造出永远不会被执行的代码 例2 22 从键盘输入一个整数n 按下式计算y的值 并输出y和n的值y 1 2 3 n 分析 使用自顶向下 逐步求精的原则设计这个算法第一步 根据题意 得到算法的顶层框架描述如下 1 input n 2 y 3 output n y 方法一 用子函数实现 第二步 对上面第 2 步的求和进行细化y 0 for i 1 i n i y y factorial i 累加 用factorial i 表示整数i的阶乘 第三步 求阶乘函数的细化factorial inti s i 1 for j 1 j i j s i s i j 累乘 方法一 用子函数实现 第四步 将算法变成C语言程序将算法转换成C语言程序的过程 实际上是将算法中的相关语句 表达式等用符合C语言规范的语句和表达式表达出来 方法一 用子函数实现 完整程序见教材46页 外循环为累加型内循环为阶乘型 从变化规律分析 sn 0 for i 1 i n i tn 1 for j 1 j i j tn tn j sn sn tn 方法二 在同一个循环中先阶乘 后累加 sn 0 tn 1 for i 1 i n i tn tn i sn sn tn 从变化规律分析 方法三 函数功能 计算i的阶乘函数入口参数 整型i函数返回值 阶乘运算结果 intFactorial inti intj s i for j 1 j i j s i j returns i 存在三处错误 你能发现吗 程序调试实例 函数功能 计算i的阶乘函数入口参数 整型i函数返回值 阶乘运算结果 longFactorial inti intj longs i 1 for j 1 j i j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论