c语言第3章.ppt_第1页
c语言第3章.ppt_第2页
c语言第3章.ppt_第3页
c语言第3章.ppt_第4页
c语言第3章.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

上一章我们学到了 1解决判定性问题 选择结构2关系表达式 取值为1 真 0 假 3逻辑表达式 取值为1 真 0 假 注意 a 短路原则 b 操作数非0为真 0为假 上一章我们学到了 4按位运算与 或 异或 非 左移 右移5格式化输入函数scanf 格式控制串 地址表 6指针变量 存储其他变量地址的变量 指针与指针变量指针 一个变量的地址指针变量 专门存放变量地址的变量 2000 指针 指针变量 变量的内容 变量的地址 4 如何定义指针变量指针变量与其所指向的变量之间的关系 指针变量的定义一般形式 存储类型 数据类型 指针名 合法标识符 指针变量本身的存储类型 指针的目标变量的数据类型 表示定义指针变量不是 运算符 例int p1 p2 float q staticchar name 注意 1 int p1 p2 与int p1 p2 2 指针变量名是p1 p2 不是 p1 p23 指针变量只能指向定义时所规定类型的变量4 指针变量定义后 变量值不确定 应用前必须先赋值 选择结构1 if判断结构if 条件表达式 语句块1 选择结构2 if else判断结构if 条件表达式 语句块1 else语句块2 选择结构3 if elseif判断结构if 表达式1 语句块1 elseif 表达式2 语句块2 else语句块n 1 选择结构4 if语句的嵌套if 表达式 if 表达式 语句1 else语句2 elseif 表达式 语句3 else语句4 选择结构5 switch判定性结构switch 表达式 case常量表达式1 语句块1 break case常量表达式2 语句块2 break case常量表达式n 语句块n break default 语句块n 1 第三章循环结构与应用 循环结构是程序中一种很重要的结构 它会根据条件反复执行某程序段 当然不能无限的执行下去 在给定条件不成立时 循环就会停止 给定的条件称为循环条件 反复执行的程序段称为循环体 语言提供了多种循环语句 可以组成各种不同形式的循环结构 1 for循环语句 2 while循环语句 3 do while循环语句 3 1循环的概述 for 设置初始值 循环条件判断 修改循环变量 语句1 语句2 语句n for一般形式为 3 2for循环 语句功能 当表达式2的值为非零时 重复执行语句序列 表达式1 循环初始表达式 用于进入循环体前为循环变量赋初值由算术 赋值 逻辑和逗号表达式构成 表达式2 循环控制表达式 用于控制循环体语句的执行次数由关系表达式或逻辑表达式构成 表达式3 修改循环变量表达式 即每循环一次使得表达式1的值就要变化一次 由算术 赋值 逻辑和逗号表达式构成 for 表达式1 表达式2 表达式3 语句序列 for语句的执行流程 图3 1for语句执行流程图 main intn for n 1 n 10 n printf d n 1 2 3 4 5 6 7 8 9 10 输出1 10 递 增 循 环 main intn i 100 for n 1 n 5 n printf d i 100 100 100 100 100 main intn i 100 for n 5 n 0 n printf d i 输出5个100 递 减 循 环 例3 1使用for循环求整数1加到100的值 图3 3高斯级数运算的流程图 includevoidmain void intnSum 用于保存计算和 inti 循环控制变量 也是参与运算的操作数 nSum 0 for i 1 i 101 i nSum i printf 1 2 3 99 100 d n nSum 程序清单3 1progression c 双目复合赋值运算符OP 复合赋值表达式的一般形式为 表达式1Op表达式2例如 x 2 x x 2 Op表示参与构成复合赋值运算符的双目运算符 它和下面的赋值表达式等价 表达式1 表达式1 Op 表达式2 例如 x y 3等价于x x y 3 而不是x x y 3 注意 i和i 等价于i i 1 但是 这两个表达式在参与其他运算的时候是有区别的 在和其他运算结合在一起时 i表示i自增1后再参与其它运算 同理 i是i自减1后再参与其它运算i 表示i参与运算后 i的值再自增1 而i 是i参与运算后 i的值再自减1 例如下面的程序段 intx 0 inti 1 x i printf x d i d x i 输出的结果为x 1 i 2 例3 2使用逗号运算符在for循环中初始化变量 includevoidmain void intnSum 用于保存计算和 inti 循环控制变量 也是参与运算的操作数 在循环开始时 初始化变量nSum for i 1 nSum 0 i 101 i nSum i 求和 printf 1 2 3 99 100 d n nSum 例3 3很多web网站限制登陆次数 如果输入的密码在指定次数内错误 就拒绝登陆 实现一个程序 模拟验证密码的过程 判断用户输入密码的次数 若3次输入密码错误 则结束输入 图3 5控制密码输入次数程序流程图 include stdio h voidmain void intnPwd 0 用于保存输入的密码 inti 循环控制变量 intnFlag 1 密码匹配成功的标志 默认设定密码为87569 可以根据需要进行设定 for i 0 nFlag 87569 nPwd 程序清单3 3checklogon c includevoidmain void inti for i 0 i 10 printf d i i 在 设置循环增减量 部分使用逗号运算符 调用printf函数输出 例3 4使用循环输出0 9这10个数字 程序清单3 4aotherfor c main intx y for x 0 y 0 x y 50 x y printf 3d x y if x 5 0 printf n EXERCISES 写出右侧程序段的运行结果 01 05 24 44 for循环语句注意 可以省略 但须保留分号 同时在for之前必须给循环变量赋值 例如 i 0 for i 一般不可省略 否则为无限循环 如 for i 1 i sum sum i 相当于条件总为真 程序会一直不停的执行 除非在循环体中设置循环跳出语句break 01 05 25 44 亦可省略 但在循环语句体中必须有语句来修改循环变量 以使条件表达式的值在某一时刻为0 从而能正常结束循环 如 for sum 0 i 1 i 100 sum sum i i 三个表达式可均省略 即for 易造成无限循环 程序中要避免这种情况的发生 条件表达式可以是任意表达式 只要表达式的值 0 就执行循环语句 如 for i 0 c getchar n i c for循环语句注意 01 05 26 44 初始表达式 修改循环变量表达式可以是逗号表达式 如 for sum 0 i 1 i 100 sum i for循环也可以嵌套 执行时是由外向里 逐层进行 先执行外层循环 再进入内层循环 退出时相反 由里向外逐层退出 先退出内层循环 然后退到上一层循环 for循环语句注意 从键盘输入100个有符号整数 请分别统计其中正整数和负整数的个数 EXERCISES Begin num 0sum1 0sum2 0 num 输出sum1sum2 End sum1 F X 0 T 输入x sum2 F 1 设计算法 T num 100 2 实现算法 main intsum1 sum2 num sum1 sum2 num 0 for num 0 num 0 sum1 elsesum2 printf d d n sum1 sum2 while 条件判断 语句1 语句2 语句n 3 3while循环 while一般形式为 图3 8while循环执行过程 例3 6用while循环实现从1加到100的计算 includevoidmain void intnSum inti nSum 0 i 1 初始化循环控制变量 while i 101 nSum i i 改变循环控制变量的值 printf 1 2 3 99 100 d n nSum 程序清单3 6progression 2 c 例3 5使用while循环接收键盘输入 若输入字符为q或者Q 则停止循环执行 图3 9while循环处理键盘输入的流程图 include includevoidmain void charcStr 用于保存输入的字符 cStr 0 while cStr q 程序清单3 5checkcharactor c 补充知识点 getch getche 和getchar 函数getch 和getche 函数 头文件 include 这两个函数都是从键盘上读入一个字符 其调用格式为 getch getche 两者的区别是 getch 函数不将读入的字符回显在显示屏幕上 而getche 函数却将读入的字符回显到显示屏幕上 利用回显和不回显的特点 这两个函数经常用于交互输入的过程中完成暂停等功能 补充知识点 getch getche 和getchar 函数getchar 函数也是从键盘上读入一个字符 并带回显 它与前面两个函数的区别在于 getchar 函数等待输入直到按回车才结束 回车前的所有输入字符都会逐个显示在屏幕上 但只有第一个字符作为函数的返回值 do 语句1 语句2 语句n while 条件判断 3 4dowhile循环 dowhile一般形式为 图3 11dowhile循环执行过程 例3 7使用dowhile循环实现1加到100的计算 图3 12dowhile循环实现高斯级数计算的流程图 includevoidmain void intnSum 用于保存计算和 inti 循环控制变量 也是参与运算的操作数 nSum 0 i 1 初始化循环控制变量 do nSum i i 改变循环控制变量的值 while i 101 printf 1 2 3 99 100 d n nSum 程序清单3 7progression 3 c main intx x 1 do x x x while x EXERCISES A 是死循环B 循环执行三次C 循环执行一次D 有语法错误 x 0 main intx 3 do printf d x 2 while x A 1B 1 2C 3 0D 0 x 3 1 0 2 3 x x 2 EXERCISES main ints s 7 do s 2 while s 0 printf s d n s 请写出右侧程序的运行结果 EXERCISES main intx y x y 0 while x 20 y x 3 printf y dx d n y x 写出右侧程序段的运行结果以及循环体中的语句共执行了几次 EXERCISES 当确定要使用循环时 该使用哪个呢 1 首先确定需要的循环是先进行条件判断 后执行循环 还是先执行循环 然后判断条件 2 在for循环和while循环的选择上 如果涉及到初始化一些变量或者更新一些操作 那么使用for循环比较合适 否则使用while循环 3 5循环语句的选择 三种循环特性列表 main intsum i for sum 0 i 1 i 100 i sum i printf sum d n sum main intsum 0 i 1 do sum i i while i 100 printf sum d n sum main intsum 0 i 1 while i 100 sum i i printf sum d n sum main intsum 0 i 1 label if i 100 sum i i gotolabel printf sum d n sum 1 2 3 4 5 100 EXERCISES 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套 内嵌的循环中还可以嵌套循环 这就是多层循环 3 6循环的嵌套 for i 0 i 9 i for j 0 j 9 j 内层循环 外层循环 1 for 2 for for while 3 while 4 do dowhile while while 5 while 6 do do for while while 首先看九九乘法表的内容 如下所示 1 1 12 1 22 2 43 1 33 2 63 3 9 8 1 88 2 168 3 248 4 328 5 408 6 488 7 568 8 649 1 99 2 189 3 279 4 369 5 459 6 549 7 639 8 729 9 81 例3 8在屏幕上输出九九乘法表 图3 14九九乘法表的程序流程图 includevoidmain void intnRow 行数的循环控制变量 intnCol 列数循环控制变量 for nRow 1 nRow 10 nRow 外层循环控制行数 for nCol 1 nCol nRow nCol 内层循环控制列数 printf d d d nRow nCol nRow nCol printf n 输出一行后换行 程序清单3 8multiplication table c 双重循环特点 当外层循环变量中的值变换一次时 内层循环变量中的值将变换若干次 若i j已定义为int类型 则以下程序段中内循环体总的执行次数是 for i 5 i i for j 0 j 4 j A 20B 24C 25D 30 EXERCISES beak语句 break语句的一般形式为 break 例3 11循环接收有效的学生成绩数据 如果数据大于100或小于0 则结束过程 输出总成绩和平均分 图3 19例3 11程序实现的流程图 includevoidmain void floatfScore fMin 0 0f fMax 100 0f fTotal 0 0f intnCount 0 对输入的成绩个数进行计数 while scanf f 程序清单3 11break c 注意 1 break语句不能用于循环语句和switch语句之外的任何其他语句中 2 在嵌套循环中 break语句只能终止它所在的循环的执行 本例中break语句的作用就是结束循环的执行 强制退出循环 程序继续执行循环后的程序语句 continue语句 continue的作用与break语句相似 也有结束循环的作用 但是continue语句是结束本次循环 即跳过循环体中下面尚未执行的语句 接着进行下一次是否执行循环的判定 continue语句的一般形式为 continue includevoidmain void floatfScore 用于保存输入的成绩 floatfMin 0 0f fMax 100 0f floatfTotal 0 0f 保存总成绩 intnCount 0 对输入的成绩个数进行计数 while scanf f 程序清单3 12continue c 将程序清单3 11进行一下简单的修改 将break语句替换成continue语句 请读者分析程序执行的结果 体会这两种跳出循环体语句的作用和对程序流程的影响 注意 break语句则是结束整个循环过程 不再判断执行循环的条件是否成立 continue语句只结束本次循环 而不是终止整个循环的执行 在下列语句中 哪一个不为无限循环A i 100 B for while 1 i i 100 i if i 100 break C k 32764 D S 32764 dowhile S 2 S 2 S k while k 0 EXERCISES goto语句 goto语句为无条件转向语句 一般形式为 goto语句标号 语句标号用标识符表示 即由字母 数字和下划线组成 且第一个字符必须为字母或下划线 不能用整数来做标号 语句标号加在跳转的目的语句之前 并用冒号 与后面的语句分隔 例如 gotolable 123 是合法的 而goto25 是不合法的 3 7程序举例 例 下面对计算器做如下功能的扩充 1 增加菜单循环执行的功能 2 实现三角函数正弦函数的功能 sin函数 3 实现三角函数余弦函数的功能 cos函数 3 7 1计算器 菜单反复执行功能既然是要菜单反复执行 它必然是个重复性的工作 自然就可以使用这章讲解的循环语句来实现 在此采用while循环语句实现该功能 图3 22重复使用菜单功能的流程图 include includevoidmain intnFun 1 while nFun 9 system cls clrscr printf n 构造功能菜单 printf 加法运算 1 n printf 减法运算 2 n printf 除法运算 3 n printf 乘法运算 4 n printf 退出 9 n printf n printf 请输入功能选择 在屏幕上显示提示信息 scanf d 程序清单3 13AppCalc c 2 三角函数sin函数和cos函数的实现在高等数学中实现sin函数和cos函数的方法不止一种 在这里 采用的是泰勒 Taylor 公式进行实现 首先分别看下它们的泰勒展开式的形式 图3 23sin函数的实现流程图 include include includevoidmain void intnFun 1 doubledSin 0 0 dCos 0 0 dTemp 1 0 dArc 0 0 变量声明初始化 intk 0 doublepi 3 1415926 dMin 0 000001 dDegree 0 0 这里只给出sin函数和cos函数实现的程序片段 如程序清单3 15AppCalc c所 while nFun 9 system cls clrscr printf n 构造功能菜单 printf 加法运算 1 n printf 减法运算 2 n printf 除法运算 3 n printf 乘法运算 4 n printf sinx运算 5 n printf cosx运算 6 n printf 退出 9 n printf n printf 请输入功能选择 在屏幕上显示提示信息 scanf d 这里只给出sin函数和cos函数实现的程序片段 如程序清单3 15AppCalc c所 case5 sinx运算过程 dSin 0 0 dTemp 1 0 dArc 0 0 k 0 dDegree 0 printf 请输入角度 scanf lf case6 cosx运算过程 dCos 0 0 变量初始化 dTemp 1 0 变量初始化 dArc 0 0 变量初始化 k 0 dDegree 0 printf 请输入角度 scanf lf 在第1章 学生成绩档案管理系统已经具备了数据的输入和成绩分类分析的功能 不过 它只能进行单独的一次数据处理 学习过循环结构以后 结合本章的知识点 增加系统重复处理数据的能力 既检验对知识的实际应用能力 又把系统的功能进一步充实 下面对学生成绩档案管理系统做如下功能的扩充 1 实现可控的数据处理 2 对多次输入的三门成绩 C语言 英语和高数 进行分类求和 3 7 2学生成绩档案管理系统 图3 25循环统计学生总成绩的流程图 includevoidmain void floatfMin 0 0f fMax 100 0f 保存总成绩 floatfTotalc 0 0f fTotale 0 0f f

温馨提示

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

评论

0/150

提交评论