C语言培训.ppt_第1页
C语言培训.ppt_第2页
C语言培训.ppt_第3页
C语言培训.ppt_第4页
C语言培训.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

第4章选择结构 4 1关系运算和逻辑运算 4 2if语句和用if语句构成的选择结构 4 3条件表达式构成的选择结构 4 4switch语句以及用switch语句和break语句构成的选择结构 4 5语句标号和goto语句 关系运算符 共6种 用于比较两个数据的大小 被比较的数据可以是数值型 也可以是字符型等 4 1关系运算和逻辑运算 大于 大于等于 等于 优先级相同 低 不等于 优先级别 低于算术运算符 但高于赋值运算符 结合方向 自左而右 关系表达式及关系表达式的值用关系运算符连接的两个表达式称为关系表达式 如 3 3 5 3 2ba b b c a 3 b 5 a b b c 关系表达式的值 1或0 在C中 没有逻辑常量 逻辑真 整型数据1逻辑假 整型数据0 例1 设a 3 b 2 c 1则 a b其值为 c a b其值为 1 1 例2 3 3 5 3 25b ba b b 说明 1 区别 条件运算符 赋值运算符 2 字符数据的比较按其ASCII码进行 d E 3 一般不用 来判定二个实数是否相等 若变量a b为实型 判定a b相等可用 fabs a b eps其中eps是用户给定的一个充分小的数 如 a 1234 5679 b 1234 5679fabs a b 1e 6 即 a b 10 6 5 2逻辑运算符和逻辑表达式 逻辑运算符 逻辑非高 单目运算符 自右而左 逻辑与 双目运算符 自左而右 逻辑或低优先级低于关系运算符 运算的规则非运算 非真为假 非假为真 与运算 两运算量均为真 结果为真 其它均为假 或运算 两运算量均为假 结果为假 其它均为真 逻辑表达式 可以包含多个逻辑运算符 例 设a 2 c a f 3 0 x 1 y 2 c a ay c 1 0 1 0 1 1 0 0 1 0 b x y c 0 b 0 c 0 说明 1 在进行判别时非零数 真 包括字符型数据 只要其ASCII值非零 0 假如 a 4 则 a的值为0若a 0 b 5 则a b的值为0 a b的值为1 2 逻辑运算结果逻辑真 1逻辑假 0如 2 3 1 3 0 思考设 a 1 c 3 问 执行a c 5 后 表达式的值 变量c的值 执行a c 5 后 表达式的值 变量c的值 逻辑表达中 并非所有的运算符都被执行 1 a b c当a为0 则不再判别b和c 结果为0 假 当a为真 非零 才需判别b的值 当a b都为真时才判别c的值 2 a b c当a为真 非零 则不再判别b和c 结果为1 当a为假 才判别b 当a和b都为假 才判别c 1 3 1 5 问 当a 1 b 2 c 3 d 4 m n 1时执行 m a b n c d 后 变量m值为n值为 1 0 思考题 数学关系式 3 x 10用C语言的表达式如何描述 1 3 3 x 10 x10 思考 能描述20 x 30或x 100的C语言表达式是什么 20 x x 30 x 100 答表达式为 4 2if语句和用if语句构成的选择结构 功能 通过判断所给条件 决定执行给出的两种操作之一 1 if语句的三种形式 形式一 if 表达式 语句 例输入两个数 分别放入x和y中 若两数不相等 则输出其中的大数 若两数相等 则输出字符串x y和x的值 include stdio h main intx y printf Enterx y n scanf d d 其中 表达式 可以是关系 逻辑 算术表达式等 语句 可以是复合语句 形式二 if 表达式 语句1else语句2 其中 表达式 可以是关系 逻辑 算术表达式等 语句 可以是复合语句 例从键盘输入一个整数 判断该数是否能被3整除 若能 打印YES 不能被3整除 打印NO include stdio h main inta printf 请输入一个整数 n scanf d a if a 3 0 printf a dYES n a elseprintf n dNO n a 程序演示 例从键盘输入三角形的三边 判断是否能构成三角形 若能则输出其面积 若不能输出不能构成三角形 include math h main floata b c area s printf pleaseinputa b cnumber n scanf f f f 程序演示 形式三 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3else语句4 例根据考试成绩的百分制分数段打印出相应的等级 includemain floatscore printf inputscore scanf f 方法二 if e1 if e2 语句1else语句2elseif e3 语句3else语句4 4 2 2if语句的嵌套 if e1 if e2 语句1else语句2elseif e3 语句3 在if语句中又包含一个或多个if语句称为if嵌套 一般 形式如下 说明if与else配对问题 如 if e1 if e1 if e2 if e2 语句1语句1elseelse语句2语句2 C语言规定 else总是与上面最近的if配对 若要改变这种默认的配对关系 在相应的if语句上加花括号 例有一函数 编一程序 输入一个x值 输出y值 程序1 main intx y scanf d x if x 0 y 1 elseif x 0 y 0 elsey 1 printf x d y d n x y 程序2 main intx y scanf d x if x 0 if x 0 y 1 elsey 0 elsey 1 printf x d y d n x y 程序演示 如果if语句是以下形式 if 表达式1 x 表达式2 elsex 表达式3 即 表达式1的值为 真 或为 假 都只执行一个赋值语句 且给同一个变量赋值 可用以用条件表达式来实现 4 3条件表达式构成的选择结构 例 若有以下语句 if a b max a elsemax b 条件运算符和条件表达式表达式1 表达式2 表达式3作用 在两个表达式的值中选择其一 优先级别 高于赋值运算符 但低于逻辑运算符 说明 1 条件运算符 要求三个运算量 唯一的三目运算 2 执行过程 非零 真 求表达式2 即为整个表达式的值求表达式1零 假 求表达式3 即为整个表达式的值 例1 计算a b 的值 x 表达式1 表达式2 表达式3 main inta b c scanf d d 运行输入 3 4输出结果 3 4 7 例 条件运算符嵌套2 1 0 3 4 结合方向 自右而左 等价2 1 0 3 4 其值为1 2 1 0 3 4 其值为3 错误 设有语句intx 3 y 1 z 5 则下面表达式的执行结果是 x y z x 2 x 2 3 x 5 结果 6 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 可选 4 4switch语句以及用switch语句和break语句构成的选择结构 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 可选 4 4switch语句以及用switch语句和break语句构成的选择结构 4 4 2switch语句执行过程 执行过程 1 计算switch后表达式的值 若该值等于某个case后常量表达式的值 则转向该case后的执行语句 并顺序执行其它case后的语句 2 若表达式的值不等于任何case后面的常量表达式的值 则转向default后面的语句去执行 如没有default部分 则转向switch的后续语句 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 可选 例 根据从键盘输入的学生成绩 输出对应的等级 main floatscore intn printf inputscore scanf f 4 4 3在switch语句体中使用break语句 例子 根据从键盘输入的学生成绩 输出对应的等级 main floatscore intn printf inputscore scanf f includemain floatscore printf inputscore scanf f n为整型表达式 例根据考试成绩的等级打印出百分制分数段 P99 程序演示 main chargrade printf inputA E scanf c n为字符型表达式 程序演示 switch语句允许嵌套 switch switch 补充 看成一条语句 结果 a 2 b 1 一般形式 goto标号 功能 将执行流程转到以该标号为前缀的语句去执行 C语言允许在任何语句前添加标号 以作为goto语句的转向目标 标号 语句 其中 标号的命名规则与变量完全相同 4 5语句标号和goto语句 例以计算1 2 3 100的值 用if goto构成循环 main inti 1 sum 0 loop if i 100 sum i i gotoloop printf sum d n sum 第5章循环结构 5 1while语句和用while语句构成的循环结构 5 2do while语句和用do while语句构成的循环结构 5 3for语句和用for语句构成的循环结构 5 4循环结构的嵌套 5 5break语句与continue语句在循环中的作用 5 6程序举例 5 1while语句和用while语句构成的循环结构 一般形式 while 表达式 语句 循环体 说明1 循环体也可以是复合语句 2 循环体中应有使循环趋于结束的语句 也可在表达式中实现 3 如果表达式的值一开始就为0 假 则循环体将一次也不执行 例5 1求12 22 32 n2 直到累加和大于或等于10000为止 include stdio h main inti 0 sum 0 while sum 10000 sum i i i 1 printf n d nsum d n i 1 sum 使循环趋于结束 程序演示 例5 2计算pi 4 1 1 3 1 5 1 7 1 9 公式求 的近似值 直到最后一项的绝对值小于10 6为止 defineEPS1 0e 6 includemain ints floatn t pi t 1 pi 0 n 1 0 s 1 while fabs t EPS pi pi t n n 2 s s t s n pi pi 4 printf pi 10 6f n pi 程序执行结果 pi 3 141594 一般形式 do循环体语句while 表达式 分号 该语句先执行循环体 再判断表达式的值 因此 循环体语句至少被执行一次 5 2do while语句和用do while语句构成的循环结构 程序演示 例5 4计算Fibonacci 意大利数学家 数列 直到某项大于1000为止 并输出该项值 Fibonacci数列为 1 1 2 3 5 8 其特点是 前两个数是1 1 自第三个数开始 每个数都是其前两个数之和 算法 i 1f1 1i 2f2 1i 3fi fi 1 fi 2 月份123456 数量112358 程序演示 注意和课本比较 for 表达式1 表达式2 表达式3 循环体语句 注意 表达式1 仅在循环开始前 执行一次 5 3for语句和用for语句构成的循环结构 for语句最简单 最易理解的形式 for 循环变量赋初值 循环条件 循环变量增值 循环体语句 例5 5 求1 2 3 4 100 main inti sum 0 for i 1 i 100 i sum sum i printf sum d sum printf i d i 说明for语句中的三个表达式都可以省略 但其中的分号一定要保留 表达式1和表达式3既可以是一个简单表达式或逗号表达式 main inti sum for i 1 sum 0 i 100 sum i i printf sum d sum 空语句 例5 6编写程序 计算半径为0 5mm 1 0mm 1 5mm 2 0mm 2 5mm时的圆的面积 一个循环内包含另一个完整的循环结构 称为循环嵌套 5 4循环结构的嵌套 1 内层循环必须完全包含在外层循环中 不得交叉 do for while e for while e 2 内 外层循环不能使用相同的循环变量 for i 0 for i 0 错误 并列情况下允许for i 0 for i 0 例5 7两打印输出以下菱形图案 include conio h main inti j k clrscr for i 1 i 4 i for j 1 j 4 i j printf for k 1 k 2 i 1 k printf printf n for i 1 i 3 i for j 1 j i j printf for k 1 k 7 2 i k printf printf n 算法 判断m是否素数 可以让m除以2到m 1之间的每一个数 如果m能被2到m 1之间的某个数整除 则说明m不是素数 否则 m一定是素数 补充 从键盘输入一个大于2的整数m 判断m是不是素数 只能被1和它本身整除的数是素数 开始 输入数m m 2 k 2i i k m i 0 Y i k 1 m是素数 Y m不是素数 N 结束 N Y Y N i 1i N 程序演示 算法 判断m是否素数 可以让m除以2到m 1之间的每一个数 如果m能被2到m 1之间的某个数整除 则说明m不是素数 否则 m一定是素数 include math h main intk m i printf Enternumber n scanf d elseprintf disaprimenumber n m 补充 从键盘输入一个大于2的整数m 判断m是不是素数 只能被1和它本身整除的数是素数 算法 开始 m 00 k Y 2i i k Y m i 0 i 1i N Y N i k 1 m是素数 m不是素数 结束 Y N m 1m 2m 例5 8求2到100以内的全部质数 素数 N 程序演示 例5 8求2到100以内的全部质数 素数 break一般形式 break 功能 终止switch语句或循环语句的执行 使流程转入其后续语句执行 switch n case1 case2 x 10 break case3 for i 1 i sum sum i if i 100 break 注break语句跳出的不是if语句 而是跳出包含此if语句的循环体或switch语句 5 5break语句与continue语句在循环中的作用 例5 9计算s 1 2 3 i 直到累加到s大于5000为止 并给出s和i的值 程序演示 include stdio h main inti s s 0 for i 1 i s s i if s 5000 break printf s d i d n s i 程序运行结果 s 5050 i 100 说明在switch或循环语句嵌套使用的情况下 break只能终止它所在switch或循环语句 而不能直接跳出 或终止 多层循环 如 break for for if break conti

温馨提示

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

评论

0/150

提交评论