C语言第3讲-C语言编程三结构.ppt

上传人:max****ui 文档编号:6334462 上传时间:2020-02-23 格式:PPT 页数:74 大小:2.69MB
返回 下载 相关 举报
C语言第3讲-C语言编程三结构.ppt_第1页
第1页 / 共74页
C语言第3讲-C语言编程三结构.ppt_第2页
第2页 / 共74页
C语言第3讲-C语言编程三结构.ppt_第3页
第3页 / 共74页
点击查看更多>>
资源描述
C语言程序设计 程序设计初步 C语句可以分为5类 1 控制语句 9种2 函数调用语句3 表达式语句4 空语句 什么也不做5 复合语句 用 括起来 if else 条件语句for 循环语句do while 循环语句while 循环语句continue结束本次循环break中止执行switch或循环语句switch多分支选择语句goto转向语句return从函数返回语句 九种控制语句 表示算法的三种基本结构 1966年 Bohra和Jacopini提出了程序中需要的三种控制结构顺序结构选择结构循环结构 顺序结构程序举例 ch3 12 c include includemain floata b c s area scanf f f f 例1 输入三角形边长 求面积 输入 3 4 6 输出 a 3 00 b 4 00 c 6 00s 6 50area 5 33 例2 从键盘输入大写字母 用小写字母输出 ch3 13 c include stdio h main charc1 c2 c1 getchar printf c d n c1 c1 c2 c1 32 printf c d n c2 c2 输入 A 输出 A 65a 97 ch3 14 c include includemain floata b c disc x1 x2 p q scanf a f b f c f 输入 a 1 b 3 c 2 输出 x1 1 00 x2 2 00 if语句有三种形式 1 if 表达式 语句 if语句 例 if x y printf d x 选择结构 2 if 表达式 语句1else语句2 例 if x y printf d x elseprintf d y 选择结构 if语句 3 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 else语句n 选择结构 if语句 说明 1 if后的表达式必须用 括住 表达式一般为逻辑表达式或关系表达式 2 在每个else前面有一分号 整个语句结束处有一分号 3 在if和else后面只含一个内嵌的语句 如果有多个语句 应用花括号 将几个语句合成为一个复合语句 在 外面不需要再加分号 选择结构 由小到大输出两个数 main floata b t scanf f f 问题 1 语句中 取消复合语句会出现什么结果 选择结构 例1 由小到大输出三个数 main floata b c t scanf f f f 选择结构程序举例 main floatx inty scanf f 它可改写为 main floatx inty scanf f 一般形式 if if 语句1else语句2elseif 语句3else语句4从最内层开始 else总是与它上面最近的未曾配对的if配对 如 上例改为 if语句的嵌套 main floatx inty scanf f main floatx inty scanf f if x 0 y 1 可加花括号来避免逻辑错 引例if a b max a elsemax b 给同一变量赋值的情况可用条件表达式 max a b a b 条件运算符 条件表达式的一般形式 条件 表达式1 表达式2 条件运算符 执行过程判断条件若为非0 求解表达式1并以它作为整个表达式的值 若为0 求解表达式2并以它作为整个表达式的值 条件运算符的级别先于赋值号 低于算术和关系 如 x a b a b 1相当于 x a b a b 1 条件运算符的结合方向为自右向左 如 a b a c d c d相当于 a b a c d c d 若a 1 b 2 c 3 d 4 表达式的值为 4 条件表达式不能取代一般的if语句if a b printf d a elseprintf d b 它不能用条件表达式 但可写成 printf d a b a b 条件表达式中三个表达式的类型可以不同如 a 1 1 5 main charch scanf c 将大写字母转换成小写 其他不转换 条件运算符使用举例 一般形式 switch 表达式 case常表1 语句1 break case常表2 语句2 break case常表n 语句n break default 语句n 1 switch语句 多分支选择语句 switch后表达式可以任何类型case后是常量表达式 且须互不相同case的次序可任意执行完一个case后的语句后转向下一个case后的语句执行break语句可中止switch语句的执行多个case可共用一组执行语句 如 case A case B case C printf 60 n break 说明 执行下列程序后 变量k的正确结果是 intk 10 switch k case9 k 1 case10 k 1 case11 k 1 default k 1 A 10B 11C 12D 13E 14 Switch语句应用 一 将下列条件写成C逻辑表达式 1 x 10 10和x yb ab c a b c 练习题 三 变量说明 inta 3 b 1 x 2 y 0 则 a b x y ay y b y a y b y a a a b 练习题 1 C语言中相等关系用运算符 表示 试问对于下列if语句inta 1 b 2 if a b printf AisequaltoB n 在编译时 C编译程序指出该语句有语法错误 A 能B 不能2 下列选项中从语法上讲合法的if语句是 设intx a b c A if a b x B if a b x E if a b c x F if 1 x 练习题 3 下列关于switch语句和break语句的结论中 只有是正确的 A break语句是switch语句中的一部分B 在switch语句中可以根据需要使用或不使用break语句C 在switch语句中必须使用break语句D 以上三个结论中有两个是正确7 如下三个条件语句中 其中s1和s2表示是C语言的语句 它们描述的功能是否等价 A if a s1 elses2 B if a 0 s2 elses1 C if a 0 s1 elses2 D 等价 3 阅读程序写出执行结果main inta b c a 2 b 3 c 1 if a b if a c printf d n a elseprintf d n b printf end n 用goto语句和if语句实现循环goto语句的一般形式 循环结构程序设计 goto语句标号 标识符 main intn sum 0 n 1 loop if n 100 sum sum n n gotoloop printf sum d sum 例求1 2 3 100 1 循环结构满足某一条件P时循环即反复执行A操作 直到P条件为假时停止循环 当型循环 2 C语言表达式while语句 注 循环体中若有多个语句 则需用复合语句 例1 从键盘输入十个整数 求这十个整数的和 includemain intcount 0 num total 0 while count 10 count 计数器 printf EntertheNo d count scanf d 1 循环结构先执行A操作 再判断条件P是否为真 若为真 再执行A 如此反复 直到P为假为止 直到型循环 一般形式 do语句while 表达式 2 C语言表达式do while语句 注 循环体中若有多个语句 则需用复合语句 main unsignedintnumber printf Inputthenumber scanf d 例2 输入一个正整数 要求以相反的顺序输出该数 1 循环结构 计数型循环 2 C语言表达式 注 循环体中若有多个语句 则需用复合语句 1 先求表达式12 求表达式2 若为非0 执行循环体 否则出循环3 执行循环体后求解表达式34 转2 3 执行过程 main intt 1 n j 2 scanf d 例求n includemain charc for c getchar n printf c c 输入 Computer输出 Computer 例 输出键盘输入的字符 例3 求解2的n 0 9 次幂 其中 for循环体又套了一个for语句 多重循环 includemain intm k c i for m 2 k 0 k 9 k c 1 for i 1 i k i c m printf d d d n m k c 执行结果 问题 语句的作用是什么 能否放在第一个循环外 当第一次执行外层for循环语句时k值为零 此时是否进入内循环 注意语句 的作用 break和continue概念 1 break语句的作用是什么 在switch语句中结束case子句 使控制转到switch语句之外 在循环以及的循环体中使用 结束循环过程 使控制转移到整个循环语句之外的下一条语句处 在多层嵌套的循环中 break语句仅能退出一层循环 即只能退出所在的循环体 如果要从最内层的循环跳到最外层 就必须多次使用break语句 或者用goto语句 在循环体中break语句通常是与if语句共同使用 当某个条件成立 或不成立 则执行break语句退出循环 如果在循环语句中包含了switch语句 那么switch语句中的break语句仅仅能使控制退出switch语句 而不会使控制退出包含switch语句的循环语句 break和continue概念 2 continue语句的作用是什么 continue语句仅能在循环语句中使用 功能与break语句类似 但它的作用不是结束循环 而是开始一次新的循环 对于for语句而言是将控制转到实行增量处理和条件测试部分 对于while和do while语句是将控制转到条件测试部分 include math h main intn 100 j k for nk printf disaprimenumber n n 例 求100 200中的素数 注意 break和continue不同用法 例题 阅读程序 写出程序的输出结果 includemain intx 1 j 1 for x10 break if x 2 0 x 3 continue x 1 printf x d j d n x j X 12 j 10 算法概念做任何事情都有一定的步骤 为解决一个问题而采取的方法和步骤 称为算法 Algorithm 第二部分程序设计应用的常用算法 一 递推法 利用前项和后项的相互关系求新项的过程称为 递推 分析 初始条件 F1 1n 1F2 1n 2递推条件 Fn Fn 1 Fn 2n 3 例 求Fibonacci数列 0 1 1 2 3 5 8 13 的前40个数 流程图 利用前项和后项的相互关系求新项的过程称为 递推 main longintf1 f2 intk f1 1 f2 1 for k 1 k 20 k printf 12ld 12ld f1 f2 if k 2 0 printf n f1 f1 f2 f2 f2 f1 程序 问题 2 语句中 if k 2 0 printf n 起什么作用 1 f1 f2为什么采用长整型变量 3 语句能否调换 4 语句等号右边的f1值与 语句等号右边的f1值是否相同 级数展开式计算 例 级数ex的前m 1项之和的展开式为 ex 采用递推法 从前一项推出后一项结果第k项tk 可由前一项求得 即 tk tk 1 ex 因此 可采用如下算法 令t0 1 则 t1 t0 x 1 t2 t1 x 2 t3 t2 tk tk 1 x k ex main intk m floatx s t printf inputm ex 问题 for循环体中 1 和 2 语句顺序能否调换 调换后会产生什么样的结果 利用前项和后项的相互关系求新项的过程称为 递推 二 穷举法 将所有可能的方案都一一测试 找出其中符合要求的 用途 求数学上的整数方程 不定方程 或其它方法无法解决时的一种方法 分析 设 公鸡x只 母鸡y只 小鸡z只根据条件列出方程 例 百鸡问题 公鸡每只5元 母鸡每只3元 小鸡每3只1元 用100元买100只鸡 问公鸡 母鸡 小鸡各多少 流程图 main intx y z for x 1 x 19 x for y 1 y 33 y z 100 x y if z 3 0 程序 baiji c 三 求两个正整数的最大公约数 采用欧几里得的辗转相除的方法 用途 求数学上的整数方程 不定方程 或其它方法无法解决时的一种方法 三 求两个正整数的最大公约数 main intm n t r scanf d d 程序 四 求最大 小 值 求一批数的最大 小 值 可采用 擂台赛 中的淘汰法 设立一个变量作为 擂台 然后两两数据比较大小 大的留下 暂时占据擂台 小的淘汰 最后一个占据擂台的就是最大值 例 某市物理竞赛决赛有56名选手参加 求第一名获得者的编号和成绩 四 求最大 小 值 算法描述 变量number存放编号 score存放分数max存放最高分 maxnum存放最高分者的编号 main intmax 0 maxnum 0 k score number for k 1 kmax max score maxnum number printf d d n maxnum max 五 数值计算 1 用牛顿迭代法解高次方程的根条件 设函数在某一区间内为单调函数 而且有一个实根 1 用牛顿迭代法解高次方程的根 方法 1 选一个接近x的真实根x1 2 由x1求出f x1 3 在f x1 点作f x 的切线 交x轴于x2 4 通过x2求f x2 5 再过f x2 点作f x 的切线 交x轴于x3 6 一直求下去 当两次求出的根之差小于给定的数时 就认为Xn 1足够接近真实的根 牛顿迭代公式 由牛顿迭代公式可以不断地求出x1 x2 xn 实际设计时 只需用两个变量x1和x通过循环不断求出新的数据即x2 x3 x4 xn X1代表初始值 x2代表新求出的值 n代表迭代次数 f代表 f1代表 例 用牛顿迭代法求下列方程的根 include math h main floatx1 x2 f f1 eps scanf f f 例用二分法求方程在 10 10 之间的根 include math h main floata b c eps f1 f2 f3 x a 10 b 10 scanf f if f1 f2eps c a b 2 f3 2 c c c 4 c c 3 c 6 if fabs f3 eps printf root 12 6f n c break elseif f1 f3 0 b c f2 f3 else a c f1 f3
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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