




已阅读5页,还剩72页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计技术 C语言数据描述和C程序设计初步结构化程序设计和C语言的控制结构数组及其应用函数与C程序结构指针与函数指针与数组字符串及其应用结构体类型和联合体类型C语言的文件处理及其应用位运算与枚举类型 结构化程序设计和C程序控制结构 C程序的控制结构与条件表示分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例 结构化程序设计认为 任何程序都可以通过下面三种基本程序结构的组合实现 顺序结构 按语句顺序依次执行的程序结构 分支结构 根据给定条件是否成立 以决定程序流程转向的程序结构 循环结构 在某种条件成立时 反复执行某一程序段 直到条件不成立则终止循环的程序结构 实现分支结构和循环结构的关键是如何实现逻辑判断 即条件的描述和处理 C语言用关系运算和逻辑运算来实现对程序控制结构中条件的描述和处理 2 1C程序控制结构与条件表示 2 1 1C语言的关系运算 1 关系运算符和关系表达式关系运算符用于比较两个运算对象 用关系运算符将两个表达式连接起来的式子称为关系表达式 2 关系运算符及其优先级 同级 同级 赋值运算符 关系运算符 算术运算符多个同级关系运算符为左结合性 例如 c a b 先算术运算 后关系运算 c a b 先关系运算 后算术运算 高优先级 2 1 1C语言的关系运算 3 关系运算的结果关系运算的结果值为逻辑量 真 或 假 当运算符两边的运算量满足指定的关系时 其值为 真 否则为 假 在C语言中没有逻辑数据类型 所以在关系运算中 用数值 1 表示逻辑量 真 用数值 0 表示逻辑量 假 例如 设a 3 b 2 c 1 则有 ab c 结果为1 b c a 结果为0 b c a 结果为4 f a b c 左结合 f值为0 P48例2 1关系运算示例 2 1 2C语言的逻辑运算 1 逻辑表达式当需要多个条件来确定程序执行方向时 可用逻辑表达式描述条件 即用逻辑运算符将算术表达式 关系表达式或逻辑量连接起来 2 逻辑运算符及其优先级 逻辑与 逻辑或 逻辑非 其中 比 优先级高 都为双目运算符 左结合 单目运算符 右结合 优先级别高达2级 与其它运算符的优先关系 算术运算 关系运算 赋值运算从高到低 3 逻辑运算的结果是一个逻辑量 真 或 假 用数值 1 表示逻辑 真 用数值 0 表示逻辑 假 两个逻辑对象a和b之间的逻辑运算真值表 2 1 2C语言的逻辑运算 4 判断一个数据对象 逻辑量 的真假时 若数据对象为数值 0 则判定为假 若数据对象为数值非 0 则判定为真 例如 设有 inta 8 b 0 则 a b 结果为1 a b 结果为0 a 结果为0 2 1 2C语言的逻辑运算 注意 常用逻辑表达式表示某变量值是否在给定范围内 x 0 x10 描述 x 0 或者 x 10 x 0 或x 0描述 x 0 描述x 0C语言 x 0或 x 0 5 逻辑表达式运算时应遵循的两条原则 对逻辑表达式从左到右扫描求解 在逻辑表达式的求解过程中 任何时候只要逻辑表达式的值已经可以确定 则求解过程不再进行 例如 inta 1 b 2 c 0 计算 a b c 结果 逻辑表达式的值为1 a 2 b 2 c 0 计算 a b c 结果 逻辑表达式的值为1 a 2 b 3 c 0 P50例2 2逻辑运算示例 2 1 2C语言的逻辑运算 C程序的控制结构与条件表示分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例 结构化程序设计和C程序控制结构 2 2 1使用if语句实现单分支结构 1 单分支if语句的结构形式if expression sentence 其中 expression 条件表达式 关系 逻辑 任何求出0值或非0值的表达式 sentence 任何一条合法的C语句 包括复合语句 if语句 2 2分支程序结构及其应用 2 if语句的执行过程 先计算作为条件的表达式值 若表达式的值不为0 则执行结构中的语句 sentence 后执行if结构的后续语句 若表达式的值为0 则跳过语句 sentence 部分直接执行if结构的后续语句 2 2 1使用if语句实现单分支结构 P52例2 4编程序实现功能 从键盘上输入一个整数 若该输入数据是奇数则将其输出 注意 假定用符号e表示任意表达式当表达式值不为0时条件成立 可表示为 if e if e 0 当表达式值为0时条件成立 可表示为 if e if e 0 2 2 1使用if语句实现单分支结构 要使while a 循环条件成立 a应该 1 a 02 a 13 a 04 a 1 2 2 2复合语句及其应用 在C程序设计中 可能涉及到在某种条件下不能仅用一条简单语句描述的功能 为了满足这种在语法结构上只能有一条语句 而功能的实现又需要多条语句的要求 在C语言中提供了称为复合语句的语句块来解决 复合语句在语法上作为一条语句考虑 在C语言中 复合语句是用一对花括号 将若干条C语句括起来形成的语句序列 注意 C语言的复合语句右括号 后不需要用用分号 结尾 2 2 2复合语句及其应用 P54例2 5从键盘上输入三角形的三边的边长 若它们能构成一个三角形 则输出其面积 根据数学知识 若三直边a b c构成三角形 则必须满足条件 任意两边的之和大于第三边 即 a b c且a c b且b c a 计算三角形的面积的公式为 2 2 3if else语句与双分支结构 双分支结构形式 if expression sentence1 elsesentence2 语句的执行过程 先计算条件表达式的值 若表达式的值为真 非0 则执行语句1 然后执行if结构的后续语句 否则 执行语句2 然后执行if结构的后续语句 双分支结构及其应用 P55例2 6求任意输入的3个整数中的最大数 不演示 双分支结构 单分支结构 C语言中 若if else 双分支 结构中的语句满足下列两个条件 无论表示条件的表达式是真或假 语句部分都是一句简单的赋值语句 两条赋值语句都是为同一个变量赋值 就可以用条件运算符代替这种if else结构 条件运算符是C语言中唯一的一个三目运算符 其优先级别高于赋值运算符 但低于关系运算符和算术运算符 结合方向为右结合性 2 2 4条件运算符与条件表达式 表达式1 表达式2 表达式3 1 条件表达式一般形式如下 表达式1 表达式2 表达式3 2 条件表达式的执行过程 首先计算表达式exp1的值 若表达式1的值为非0 真 则计算表达式2的值作为整个条件表达式的值 若表达式1的值为0 假 则计算表达式3的值作为整个条件表达式的值 2 2 4条件运算符与条件表达式 注意 条件运算符的优先级 从高到低 算术运算 关系运算 条件运算 赋值运算例 max x y x y 条件运算符的结合性 右结合性 例 f a b a c d c d 条件表达式值的类型取表达式2 表达式3值的类型中较高的类型 2 2 4条件运算符与条件表达式 条件 2 两条赋值语句都是为同一个变量赋值例如 有如下if else结构if ch A 2 2 4条件运算符与条件表达式 2 2 5if语句的嵌套与多分支结构 if结构或者else结构的语句部分又是一个if结构 称为if语句的嵌套 if语句嵌套的一般形式 if exp1 if exp2 sentence1 elsesentence2 elseif exp3 sentence3 elsesentence4 2 2 5if语句的嵌套与多分支结构 注意 else总是与它上面的最近的尚未配对的if配对 除非用 限定内嵌if语句的范围 当嵌套或被嵌套的if结构中存在不平衡的if结构 即没有else部分 更要注意if与else的配对关系 配对 配对 P57例2 8公司按照销售人员收到的订单金额数量评定等级 订单总金额超过一万的为A等 5000 9999为B等 2500 4999为C等 2500以下为D等 编制程序根据输入的订单总金额数判定等级 2 2 5if语句的嵌套与多分支结构 10000以上A等5000 10000B等50002500 5000C等2500以下D等 当被嵌套的if结构均被嵌套在else的语句部分时 形成了一种称为else if的多分支选择结构 这是if else多重嵌套的变形 其一般形式为 if exp1 sentence1 elseif exp2 sentence2 elseif exp3 sentence3 elseif expN sentenceN elsesentenceN 1 2 2 5if语句的嵌套与多分支结构 注意 在这种特殊的else if结构中 表示条件的表达式是相互排斥的 执行该结构时控制流程从exp1开始判断 一旦有一个表达式的值为非0 真 时 就执行与之匹配的语句 然后退出整个选择结构 如果所有表示条件的表达式值均为0 假 则在执行语句sentenceN 1后退出整个选择结构 如果当所有的条件均为假时不需要进行任何操作 则最后的一个else和语句sentenceN 1可以缺省 2 2 5if语句的嵌套与多分支结构 自行分析 例2 9编写程序求如下所示多分支方程的解 在程序中 变量x的取值区间为 DBL MIN 1 1 10 10 DBL MAX 其中DBL MIN和DBL MAX分别表示双精度实型数据所能取得的最小值和最大值 2 2 5if语句的嵌套与多分支结构 2 2 6switch语句与多分支结构 C语言中还可用switch语句实现多分支选择结构 1 switch语句的一般形式如下 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式N 语句N break default 语句N 1 该表达式的值必须是有序型 即整型 字符型 枚举型三者之一 2 执行过程 首先 对表达式 expression 求值 然后 在语句的花括号内从上至下查找所有的case分支 当找到与条件表达式值相匹配的case时 将其作为控制流程执行的入口 并从此处开始执行相应的语句段 直到遇到break语句或者switch语句的右花括号 为止 2 2 6switch语句与多分支结构 switch number case1 sentence1 case2 sentence2 case3 sentence3 default sentence4 sentence5 2 2 2 6switch语句与多分支结构 3 使用switch语句结构的注意事项 表达式expression的值必须是有序型 即整型 字符型 枚举型三者之一 语句段sentences可以是单条语句 也可以是多条语句 不需要使用花括号 语句段sentences中的语句是任意合法的C语句 case中的常数值应与表达式值对应一致 且各常数值不能相同 结构中的break语句和default是可选项 2 2 6switch语句与多分支结构 自行分析 P62例2 12从键盘输入一个字符 判断它是数字 空格还是其它键 若是数字 要求显示是哪一个数字 在switch的语句段中又包含了switch语句 称为switch语句的嵌套 对于内嵌的switch结构处理方法与单层switch结构处理方法相同 需要注意 执行到内嵌swithc结构中的break语句或内嵌switch语句的右花括号时 只是退出内嵌的switch结构 而不是退出整个switch结构 如例2 13所示 2 2 6switch语句与多分支结构 P63例2 13swithc结构的嵌套示例 2 2 sum 3 sum 8 sum 8 2 2 C程序的控制结构与条件表示分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例 结构化程序设计和C程序控制结构 2 3循环程序结构及其应用 循环结构是结构化程序设计的三种基本结构之一 是构成各种复杂程序的基本构造单元 在C语言中提供了三种用以实现循环结构的语句 它们分别为 while语句do while语句for语句 2 3 1while型循环结构 当型循环结构由while语句构成 其基本思想是当条件满足时进入循环 条件不满足时退出循环 一般形式如下 while exp Loop Body执行过程是 表达式exp为非零 真 执行循环体Loop Body 表达式exp为零 假 退出循环 P65例2 14使用while循环控制结构求的值 2 3 1while型循环结构 while语句的注意事项 循环体有可能一次也不被执行 这是因为while的执行过程是先判断 后执行 若表达式值一开始就为0 假 则一次循环也不做 循环体内必须有能改变循环控制条件的语句 循环体可以是一条语句 一个复合语句 空语句以及任何合法的C语句 作为判断条件的表达式可以为算术表达式 关系表达式 逻辑表达式 2 3 1while型循环 当循环 结构 2 3 2do while型循环结构 do while型循环结构由while语句构成 是一种变形的直到型循环结构 do while语句的一般形式 doLoop Bodywhile exp 执行过程是 首先执行一次循环体 然后计算作为判断条件的表达式的值 若表达式的值为非0 真 则继续执行循环体 直到条件表达式的值为0 假 时 退出循环结构 控制流程转到该循环结构之后的语句 2 3 2do while型循环结构 do while循环语句注意事项 do while循环 是先执行循环体 再判断条件 因而循环体至少执行一次 循环体内必须有能改变循环控制条件的语句 循环体可以是一条语句 一个复合语句 空语句以及任何合法的C语句 在使用时 while exp 后的分号必须有 P66例2 16编程序实现功能 将一个整数的各位数字颠倒后输出 2 3 2do while型循环 通知下周星期四全天 上班时间内 在D1118购买实验报告 以班级为单位 不接待零星学生 实验须知课用教材和实验教材均要带齐 换教室 综合楼224stguo 2 3 3for型循环结构 for语句构成的循环不仅可用于循环次数已确定的情况 还可用于循环次数不确定 但给出了循环结束条件的循环 for循环语句的一般形式为 for exp1 exp2 exp3 Loop Body其中 三个表达式称为循环控制表达式exp1为循环控制变量赋初值exp2用于判断是否执行循环exp3用于修改循环控制变量执行过程 先计算表达式1的值 然后判断表达式2的值是否为非0 真 若表达式2的值为真 则执行循环体 执行完循环体后 计算表达式3的值 然后再次计算表达式2的值以确定是否继续执行循环体 直到表达式2的值为0 假 止 为真 执行循环体 修改i 为真 注意 由于for循环是先判断 后执行 因而循环体有可能一次都不执行 for循环不仅可在表达式3中修改循环控制变量的值 还允许在循环体中存在改变循环控制条件的语句 循环体可以是一条语句 一个复合语句 空语句等任意合法的C语句 for循环的三个表达式分别都可以是逗号表达式 for循环的三个表达式中可以缺省一个 两个 三个 但作为分隔符使用的分号不能缺省 2 3 3for型循环结构 for i 1 j 10 i j i 2 3 3for型循环结构 编程序实现功能 求n的阶乘 n 1 2 3 n 相应C程序如下 P69例2 19编程实现求阶乘功能 要求循环体用空语句 factorial factorial n n P68例2 18编程序实现功能 判断从键盘输入一个大于2的正整数是否为素数 素数的定义只能被1和自身整除的自然数 判断一个正整数m是否为素数的方法将2到m 1之间的每一个整数去除m 若其间有一个能整除m 则m不是素数 若2到m 1之间的所有整数都不能整除m 则m为素数 2 3 3for型循环结构 2 3 5循环的嵌套 一个循环结构的循环体内又包含另外一个完整的循环结构 称为循环的嵌套 循环的嵌套层数可以是多层 称为多重循环 构成循环的嵌套结构时应注意以下几点 三种循环结构 while循环结构 do while循环结构 for循环结构 可以相互嵌套 循环嵌套时应注意内层循环结构必须完整地被嵌套在外层循环结构的循环体内 不得出现交叉的现象 一般情况下 嵌套结构中的外层循环和内层循环的循环控制变量不得同名 for i 1 i 3 i for j 1 j 2 j P69例2 20编程序输出由字符构成的图形如下 2 3 5循环的嵌套 解释程序功能 外层循环语句控制输出图形的行数 i 内嵌循环语句1控制输出每行的前导空格 j 内嵌循环语句2控制输出每行的字符及个数 j 通过ch i j计算得出对应字符 用printf n 实现输出一行后的换行 自行分析 例2 21编程序打印如下所示乘法九九表 12345678911224336944812165510152025661218243036771421283542498816243240485664991827364554637281 2 3 5循环的嵌套 C程序的控制结构与条件表示分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例 结构化程序设计和C程序控制结构 2 4 1break语句 break语句是一条限定转移语句 一般形式 break 功能 把程序的控制流程转出直接包含该语句的循环结构或switch结构 break语句只能用在switch结构和循环结构中 自行分析 P72例2 23编程实现 求调和级数中至多少项后的和值大于10 调和级数的第n项形式 2 4 1break语句 2 4 2continue语句 continue语句是一条限定转移语句 一般形式为 continue 功能 提前结束本次循环体的执行过程而直接进入下一次循环 continue语句只能用在循环结构中 C程序中的continue语句总是出现在if结构的语句部分 构成形式如下 if expression continue P73例2 24编程序实现功能 检测从键盘上输入的以换行符结束的字符流 统计非字母字符的个数 2 4 2continue语句 2 4 3goto语句 语句形式 goto语句标号 语句标号 用标识符表示 语句功能 程序的控制流程无条件地转移到语句标号所指的标号语句处 goto使用范围 局限于函数内部 goto语句常用来直接退出多重循环结构 从而简化程序设计 goto语句常用来直接退出多重循环结构 从而简化程序设计 例如 for for for if disaster gotoerror error 2 4 3goto语句 在 程序设计中 使用goto语句和if语句也可构成循环结构 但不提倡使用goto语句构成循环结构 includevoidmain intj 1 sum 0 loop if j 100 sum j j gotoloop printf d n sum 2 4 3goto语句 C程序的控制结构 C程序的控制结构概述C语言中的关系运算和逻辑运算分支结构及其应用循环结构及其应用其他简单控制结构C语言控制结构应用举例 2 5C语言控制结构应用举例 1 求最大公约数和最小公倍数2 穷举思想及程序实现3 迭代思想及程序实现 2 5 1求最大公约数和最小公倍数 分析 使用辗转相除法求两个正整数m和n m n 的最大公约数 其算法描述为 m除以n得到余数r 0 r n 若r 0则算法结束 n为最大公约数 否则执行步骤 m n n r 转回到步骤 当已知两个非负整数m和n的最大公约数后 求其最小公倍数的算法可以简单描述为 两个正整数之积除以它们的最大公约数 P75例2 25求两个正整数的最大公约数和最小公倍数 例 求114和9的最大公约数和最小公倍数 大数小数商余数114 9 12 69 6 1 36 3 2 03 0 不能继续做下去了最小公倍数 大数 小数 最大公约数 114 9 3 342 余数为零时的小数就是最大公约数 两个变量中的值进行交换的算法 借助一个中间变量inta 3 b 4 t t a a b a 3b 4b t t t a a b b t 2 5 1求最大公约数和最小公倍数 保证m中是两数中较大的数 n中是较小数 P75例2 25求两个正整数的最大公约数和最小公倍数 2 5 2穷举思想及程序实现 穷举就是对多种可能的情形一一测试 从众多的可能中找出符合条件的 一个或一组 解 或者无解的结论 在一个集合内对集合中的每一个元素进行一一测试的方法称为穷举法 穷举本质上就是在某个特定范围中的查找 是一种典型的重复型算法 其重复操作 循环体 的核心是对问题的一种可能状态的测试 穷举法的实现主要依赖两个基本点 确定可能值的搜寻范围 确定可能值的判定方法 P76例2 26编程序找出所有的 水仙花数 解法1 水仙花数 是指一个3位正整数 其各位上数字的立方之和等于这个数本身 例如 153 13 53 33 故153是 水仙花数 解法1 分离数据法 依题意可以得出 搜寻可能值的范围为100 999 判定方法为各位上数字的立方之和等于被判定数 程序可以依次取出区间 100 999 之间的每一个数 然后将该数分解为3个数字 按照判定条件判定即可 解法2 组合数据法 如果用a b和c分别表示3位数的百位 十位和个位 则该3位数可以表示为 a 100 b 10 c 其中a的变化范围为 1 9 b和c的变化范围均为 0 9 程序只需要依次用a b和c组合出所有的3位数参加判断即可 P77例2 26b编程序找出所有的 水仙花数 解法2 2 5 2穷举思想及程序实现 P77例2 27搬砖问题 36块砖 36人搬 男搬4 女搬3 两个小孩抬1砖 要求将所有的砖一次搬完 需要男 女 小孩各多少 设男 女 小孩的数量分别为man woman child 依题意得出 判定方法 4 man 3 woman 0 5 child 36搜寻范
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮店转让与经营权委托合同范本
- 茶具与文化体验馆合作经营合同
- 个人停车场租赁合同模板
- 财政部门财务人员编制外聘用合同范本
- 餐饮企业总经理聘任与国际化发展战略合同
- 公共交通枢纽停车场租赁及便民服务设施建设合同
- 素食餐厅租赁及食材供应与环保理念合作协议
- 感觉统合失调治疗
- 朝阳区校园保安服务与校园安全风险评估合同
- 医院医务礼仪培训
- 巡察组信访方案
- 第十三章 被子植物(Angiosperm)
- 零价铁脱氯还原多氯联苯的研究进展
- 《培养小学生的课文思辨能力》课件教案
- 2024年江铜集团招聘笔试参考题库含答案解析
- 基带信号眼图实验-matlab仿真
- 初中班会 尊师重教主题教育班会 课件 (27张PPT)
- 《write.as》手机版怎么看文
- 绘本故事:睡睡镇
- 酒店住宿水单模板1
- 北师大版五年级数学下册 (分数除法(三))分数除法教学课件(第2课时)
评论
0/150
提交评论