C语言第三次作业答案.ppt_第1页
C语言第三次作业答案.ppt_第2页
C语言第三次作业答案.ppt_第3页
C语言第三次作业答案.ppt_第4页
C语言第三次作业答案.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

第四章 语句 程序控制结构 顺序 选择 循环 4 1C语句总述 C语句一般以分号 为结束标志 可分为以下六类 1 表达式语句表达式语句由表达式加上分号 组成 如 x 8 赋值表达式语句 a 5 b 7 c 16 逗号表达式语句 x y x y 条件表达式语句 a 算术表达式语句 2 说明语句变量定义语句和函数说明语句统称说明语句 如 inta b p i 0 floatadd float float 函数说明语句 3 空语句 只有分号 组成的语句称为空语句 空语句是什么也不执行的语句 在程序中空语句可用来作空循环体或转向点 如 while getchar n 本语句的功能是 只要从键盘输入的字符不是回车则重新输入 4 复合语句 把多个语句用括号 括起来组成的一个语句称为复合语句 在程序中应把复合语句看成是单条语句 而不是多条语句 如 t x x y y t 5 函数调用语句 由函数名 实际参数加上分号 组成 如 printf CProgram 6 控制语句控制语句用于控制程序的流程 以实现程序的各种结构方式 它们由特定的语句定义符组成 语言有九种控制语句 可分成以下三类 条件判断语句 if语句 switch语句 循环执行语句 dowhile语句 while语句 for语句 转向语句 break语句 continue语句 goto语句 return语句 4 2顺序结构 C语言中的顺序结构主要由说明语句 表达式语句 空语句以及复合语句组成 在顺序结构程序中 各语句 或命令 是按照位置的先后次序顺序执行的 且每个语句都会被执行到 例 输入两个整数 编程完成两数的交换 main inta b t scanf d d main inta b scanf d d 4 3选择结构 它所要解决的问题是根据 条件 判断的结果决定程序执行的流向 因此该结构也被称为判断结构 程序执行的流向是根据条件表达式的值是 0 还是非 0 来决定 流程 设计选择结构程序 需要考虑两个方面的问题 一是在C语言中如何来表示条件 条件表达式 二是在C语言中实现选择结构用什么语句 if switch结构 简单if语句if else语句if elseif else语句switch语句 3 1简单if语句 语法形式 if 表达式 语句其中表达式是决定程序流向的条件语句可以是单语句或复合语句 if语句示例 例1 输入任意三个整数a b c 求三个数中的最大值 例4 2 main 注意三段式编程思想 inta b c max printf Pleaseinputthreenumbers scanf d d d 输出结果语句 例2 输入x y两整数 按小到大顺序输出 main intx y t scanf d d 输出 运行结果 输入 4 1输出 1 4 3 2if else语句 语法if 表达式 语句1else语句2 if else语句示例 例1 输入一个整数 输出该整数的绝对值main intn scanf d printf d n 0 n n 例2 用if else语句求输入的三个整数中的最大数main inta b c max scanf d d d max b F 3 3系列if语句 if 条件1 语句1elseif 条件2 语句2elseif 条件3 语句3elseif 条件n 语句nelse语句n 1其中最后一个else在无语句n 1时可以省略 系列if结构流程图 系列if结构示例 例1 用elseif结构求解一元二次方程ax2 bx c 0的根 系数a b c的值从键盘输入 见98页例4 4 求一元二次方程流程图 例2 从键盘输入成绩score 编程要求能有如下输出 score 60 输出E 60 score 70 输出D 70 score 80 输出C 80 score 90 输出B 90 score 输出A main intscore printf Enterascore n scanf d 应用if结构的注意事项 1 在if结构中 语句可以是简单语句也可以是复合语句 但复合语句一定要加 例 已知intx 10 y 20 z 30 以下语句执行后x y z的值是 if x y z x x y y z 2 if结构与 的综合应用时遵循原来的自增自减运算符的应用规则例 下面程序运行后结果是 main intm 5 if m 5 printf d n m elseprintf d n m 3if结构可以嵌套使用 当有众多的if和else时 else必须和if配对使用 且else总是跟它上面最近的if配对 例 下面这段程序执行后 x的值为 main inta 1 b 3 c 5 d 4 x if ab 则x if c d x 1 elseif a c if b d x 2 elsex 3 elsex 6 elsex 7 printf x d x 注意 在if else的嵌套结构中 else总是与它上面最近的if配对 if a b x 2 if a b x 7 3 4switch语句 switch结构是多分支选择结构 根据表达式值的不同 程序转入不同的模块执行 switch结构的语法形式switch 表达式 case常量表达式1 语句1 case常量表达式2 语句2 case常量表达式n 语句n default 语句n 1 不带break语句switch结构图 其中 e为表达式e1 e2 en为常量表达式1 2 n 带break语句的switch结构 实际使用时 一般要使程序在执行一个case语句后退出switch结构 可用break语句将上述switch结构改成 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 e e1 e e2 e e3 e en 语句1 语句2 语句3 语句n 语句n 1 T T T T F F F F default 其中 e为表达式e1 e2 en为常量表达式1 2 n 例4 6用switch结构编写可处理四则运算的程序main floatv1 v2 charoperator printf Pleasetypeyourexpression n scanf f c f case printf v1 v2 2f n v1 v2 break case if v2 0 printf divisionbyzero n elseprintf v1 v2 2f n v1 v2 break default printf unknownoperator n switch使用说明 每个case后面的常量表达式的值必须互不相同 以免程序执行的流程产生矛盾switch后面括号内的表达式 可以是整型或字符型表达式或枚举型数据加上break语句可以使程序执行某一分支后直接退出switch结构多个case语句可以共用一组执行语句如 case4 case5 case6 case7 d 8 break switch与if elseif else 改写用if elseif语句写成的程序 从键盘输入成绩score 编程要求能有如下输出 score 60 输出E 60 score 70 输出D 70 score 80 输出C 80 score 90 输出B 90 score 输出A main intscore s1 printf Enterascore n scanf d 综合实例 输入3个边长a b c 判断它们是否能构成三角形 若能构成三角形 则进一步判断此三角形是哪种类型的三角形 等边三角形 等腰三角形 直角三角形和一般三角形 等腰直角算作等腰 分析 判断能否构成三角形 a b c a c b b c a判断是否等边三角形 a b b c判断是否等腰三角形 a b b c c a判断是否直角三角形 a a b b c c a a c c b b b b c c a a main inta b c printf nPleaseinputa b c scanf d d d 构不成三角形 在构成三角形的前提下四种三角形的类型判断选择语句 选择结构复习 读程题 includemain inta 0 b 0 c 0 x 0 if a b elseif b if c x 3 elsex 4 printf x d n x includemain intx 1 y 0 a 0 b 0 switch x case1 switch y case0 a break case1 b break case2 a b break printf a d b d n a b a 2 b 1 4 4循环结构 4 4 1while循环结构4 4 2do while循环结构4 4 3for循环结构4 4 4无条件控制语句break continue goto4 4 7多重循环4 4 8应用举例 概述 循环结构根据循环条件决定是否要重复执行某一模块 循环体 C语言中主要提供三种循环语句 while语句 do while语句 for语句 4 4 1while语句 一般形式 执行流程while 表达式 语句也称语句为循环体 while循环结构是一种当型循环结构 例4 8用while循环写一个程序统计从键盘输入的数字字符出现的次数并把其中的数字字符依次输出 include stdio h main 只统计数字字符出现的次数 charc intnd 0 while c getchar n if c 0 include stdio h main 增加统计字母字符的个数 charc intnd 0 nl 0 while c getchar n if c 0 从键盘输入n 计算累加和 阶乘n 计算1 2 nmain intn sum 0 i 1 scanf d 计算n main longfa 1 i 1 n scanf ld 例2 已知s 1 2 3 n 求当s首次超过2 000 000时的n和s的值main intn 0 longs 0 an 1 while s 2000000 n an an n s s an for n 1 s 2000000 n an an n s s an printf s ldn d n s n 运行结果 s 4037913n 10 4 4 2do while循环语句 一般形式 执行流程do语句while 表达式 do while循环结构是一种直到型循环结构 main longnum intn 0 printf Pleaseinputthenumber scanf ld 例4 9 用do while结构进一步改写例4 5 p102 逆序输出一个正整数并计算它是几位数 例 求的部分和 直到余项的首项的值小于1 0e 4 分析 设第n项un xn n 则第n 1项un 1 xn 1 n 1 及un 1 un x n 1 main floatx u 1 s 0 intn 0 scanf f 4 4 3for循环语句 一般形式for 表达式1 表达式2 表达式3 语句 循环体 其中 表达式1 初始化表达式 可用来设定循环控制变量或循环体中变量的初始值 可以是逗号表达式 表达式2 循环条件表达式 其值为逻辑量 为非0时继续循环 为0时循环终止表达式3 增量表达式 用来对循环控制变量进行修正 也可用逗号表达式包含一些本来可放在循环体中执行的其他表达式上述表达式可以缺省 但分号不可缺少 执行过程 例4 11用for语句写程序在屏幕上依次输出26个字母 输出形式 a b c d y z 例1 求s sin1 sin2 sin50 include math h main 用数学函数加上面的包含文件 intn floats for s 0 n 1 n 50 n s sin n printf s f n s 例1 写出下列程序的输出结果main inti s 0 t 0 for i 1 i 10 i 选择结构作循环体 switch i 6 case0 t i break case1 s i break printf t d s d n t s 结果 t 30 s 15 无条件控制语句 4 4 4break语句4 4 5continue语句4 4 6goto语句 4 4 4break语句 形式 break 作用 跳出循环体 提前结束循环 无条件转移到循环结构的下一句继续执行 使用场合 只能用在switch结构和循环结构中 例4 13 写一个程序求整数m是否是素数 一个只能被1和自己整除的数称为素数 决定一个数m是否是素数 只要让m被2除到被m除就可以 如果不能被2到m中的任何一个数整除 就定m为素数 include stdio h main intm i scanf d 例 阅读如下程序 写出运行结果main inti s 0 for i 1 i10 break printf i d s d n i s 结果 i 3 s 14 4 4 5continue语句 形式 continue 作用 用来结束本次循环 即跳出循环体中尚未执行的语句 直接进行循环条件的判断 使用场合 用于循环结构中 例4 14 写程序从键盘读入分数 计算有效分数的总分 平均分 最高分 最低分 main floatscore min 100 max 0 total 0 avg intn 0 printf Pleaseinputfirstscore while scanf f 例1 阅读如下程序 写出运行结果main inti s 0 n 0 for i 1 i 10 i if i 2 0 i 3 0 continue n s i printf n d s d n n s 结果 n 3 s 13 4 4 6goto语句 形式 goto语句标号 其中语句标号用标识符表示 与goto语句相对应 程序中必有一个带语句标号的语句 形式为 语句标号 语句 作用 程序无条件地转移到具有该语句标号的语句上继续执行 说明 goto语句不是一个必要的语句 与if结构配合构成条件转移或循环 例4 15 求1 100间的奇数和 即求1 3 5 99main inti 1 sum 0 loop sum sum i i i 2 if i 100 gotoloop printf sum d n sum 运行结果 sum 2500 for i 1 i 100 sum i i 2 4 4 7多重 嵌套 循环 在循环体内又包含另一个或多个完整的循环结构 称为多重循环 要点 三种循环语句可以相互改写 相互嵌套 但不允许交叉break语句用于多重循环中 是从语句所在的循环跳转到上一层循环continue处于多重循环时 仅仅影响包含它的循环结构执行体执行的次数 三种循环结构的等价关系 ints 0 i 1 while i 100 s s i i i 1 ints 0 i for i 1 i 100 i s s i ints 0 i 1 do s s i i i 1 while i 100 以下三种结构都可以计算数学式子 1 2 3 100 例1 打印阶梯状九九乘法表 include stdio h main inti j for i 1 i 9 i for j 1 j i j printf d d 4d i j i j printf n 嵌套循环举例 例2 写出下列程序的输出结果 include stdio h main intn a x charcc scanf d abcd abcd abcdabcd 4 4 8综合应用举例 1 猴子吃桃 问题 猴子第一天摘下若干个桃子 当即吃了一半 还多吃了一个 第二天又将剩下的桃子吃掉一半 又多吃了一个 以后每天都吃前一天剩下的一半零一个 到第十天想吃时 见只剩下一个桃子 求第一天共摘了多少个桃子 这是个 倒推 问题 设 第n天的桃子数为Xn 它前一天的桃子数为Xn 1则 Xn Xn 1 2 1可得到 Xn 1 2 Xn 1 已知 X10 1 main 用while循环 inti a i 10 a 1 while i 1 a 2 a 1 i printf a d n a 运行结果 a 1534 main 用for循环 inti a for i 10 a 1 i 1 i a 2 a 1 printf a d n a 2 有一头母牛每年年初生一头小母牛 每头小母牛从第4个年头起 每年年初也生一头小母牛 求在第20年时 共有多少头牛 这是个 顺推 问题 设 第n年时的母牛数为Yn 则 Y1 2 Y2 3 Y3 4 Y4 Y3 Y1 Y5 Y4 Y2 可得到 当n 4时有 Yn Yn 1 Yn 3已知 Y1 2 Y2 3 Y3 4 main inti y1 y2 y3 y4 y1 2 y2 3 y3 4 即y1 2 y2 3 y3 4 for i 4 i 20 i y4 y3 y1 即yn yn 1 yn 3 y1 y2 y2 y3 y3 y4 printf 20yearsofcowtotalamountis d n y4 结果 20yearsofcowtotalamountis2745 3 例4 20 求两整数的最大公约数和最小公倍数 求最大公约数算法 有两整数a和b a b得余数c 若c 0 则b即为两数的最大公约数 若c 0 则a b b c 再回去执行 例如求27和15的最大公约数过程为 27 15余1215 12余312 3余0因此 3即为最大公约数求最小公倍数算法 最小公倍数 两整数的乘积 最大公约数 main intm n a b t c prinf Inputtwointegernumbers n scanf d d while b 0 c a b a b b c b a 4 例4 17 百钱百鸡问题 公鸡5文钱1只 母鸡3文钱1只 小鸡一文钱3只 100文钱如何买100只鸡 分析 设买x只公鸡 y只母鸡 z只小鸡 则有 x y z 1005x 3y z 3 100隐含条件 x y z都是整数 x 20 y 33 用穷举法 即把x y x所有可能的各种组合都一一判断是否符合上述不定方程组 具体是 把x可能值0 20和y可能值0 33用二重循环来组合 每个x和y组合都可得到z值 即z 100 x y 若x y z值使5

温馨提示

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

评论

0/150

提交评论