收藏 分销(赏)

第4章程序的控制结构.ppt

上传人:精**** 文档编号:1918707 上传时间:2024-05-11 格式:PPT 页数:86 大小:1.58MB
下载 相关 举报
第4章程序的控制结构.ppt_第1页
第1页 / 共86页
第4章程序的控制结构.ppt_第2页
第2页 / 共86页
第4章程序的控制结构.ppt_第3页
第3页 / 共86页
第4章程序的控制结构.ppt_第4页
第4页 / 共86页
第4章程序的控制结构.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

1、第第第第4 4 4 4章章章章 程序的控制结构程序的控制结构程序的控制结构程序的控制结构C C程序设计语言程序设计语言曲超2024/5/9 周四2内容提要内容提要 算法的描述方法算法的描述方法算法的描述方法算法的描述方法 基本控制结构基本控制结构基本控制结构基本控制结构 基本控制语句基本控制语句基本控制语句基本控制语句 常用算法,如累加、累乘、统计、递推、迭代、常用算法,如累加、累乘、统计、递推、迭代、常用算法,如累加、累乘、统计、递推、迭代、常用算法,如累加、累乘、统计、递推、迭代、穷举等穷举等穷举等穷举等 结构化程序设计的基本思想结构化程序设计的基本思想结构化程序设计的基本思想结构化程序设

2、计的基本思想2024/5/9 周四3C C C C程序结构程序结构程序结构程序结构C程序源程序文件1源程序文件2源程序文件3编译预处理命令全局变量声明函数1函数n函数首部函数体局部变量声明执行语句2024/5/9 周四4什么是结构化程序设计?什么是结构化程序设计?Structured ProgrammingStructured Programming,简称,简称,简称,简称SPSP 19651965年,最早由年,最早由年,最早由年,最早由E.W.DijkstraE.W.Dijkstra在一次国际会议上提出在一次国际会议上提出在一次国际会议上提出在一次国际会议上提出 19661966年,年,年,

3、年,C.BohmC.Bohm和和和和G.JacopiniG.Jacopini首先证明了:首先证明了:首先证明了:首先证明了:只用顺序、选择、循环三种基本的控制结构就能实现任何只用顺序、选择、循环三种基本的控制结构就能实现任何只用顺序、选择、循环三种基本的控制结构就能实现任何只用顺序、选择、循环三种基本的控制结构就能实现任何单入口、单出口的程序单入口、单出口的程序单入口、单出口的程序单入口、单出口的程序给结构化程序设计奠定了基础给结构化程序设计奠定了基础给结构化程序设计奠定了基础给结构化程序设计奠定了基础 19711971年,年,年,年,IBMIBM公司的公司的公司的公司的MillsMills提

4、出:提出:提出:提出:程序应该只有一个入口和一个出口程序应该只有一个入口和一个出口程序应该只有一个入口和一个出口程序应该只有一个入口和一个出口进一步补充了结构化程序的规则进一步补充了结构化程序的规则进一步补充了结构化程序的规则进一步补充了结构化程序的规则2024/5/9 周四5什么是结构化程序设计?什么是结构化程序设计?目前,还没有一个严格的定义目前,还没有一个严格的定义目前,还没有一个严格的定义目前,还没有一个严格的定义19741974年,年,年,年,D.GriesD.Gries教授将已有的对结构化程序设计的不同教授将已有的对结构化程序设计的不同教授将已有的对结构化程序设计的不同教授将已有的

5、对结构化程序设计的不同解释归纳为解释归纳为解释归纳为解释归纳为1313种。种。种。种。一个比较流行的定义是:一个比较流行的定义是:一个比较流行的定义是:一个比较流行的定义是:结构化程序设计是一种进行程序设计的原则和方法,它结构化程序设计是一种进行程序设计的原则和方法,它结构化程序设计是一种进行程序设计的原则和方法,它结构化程序设计是一种进行程序设计的原则和方法,它避免使用避免使用避免使用避免使用gotogoto语句,采用语句,采用语句,采用语句,采用“自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精”方法方法方法方法进行程序设计,按照这种原则和方法设计出的程序的特进行程

6、序设计,按照这种原则和方法设计出的程序的特进行程序设计,按照这种原则和方法设计出的程序的特进行程序设计,按照这种原则和方法设计出的程序的特点为:点为:点为:点为:结构清晰结构清晰结构清晰结构清晰 容易阅读容易阅读容易阅读容易阅读 容易修改容易修改容易修改容易修改 容易验证容易验证容易验证容易验证2024/5/9 周四6结构化程序设计的核心思想结构化程序设计的核心思想 采用顺序、选择和循环三种基本结构作为程序设计采用顺序、选择和循环三种基本结构作为程序设计采用顺序、选择和循环三种基本结构作为程序设计采用顺序、选择和循环三种基本结构作为程序设计的基本单元的基本单元的基本单元的基本单元 只有一个入口

7、;只有一个入口;只有一个入口;只有一个入口;只有一个出口;只有一个出口;只有一个出口;只有一个出口;无死语句,即不存在永远都执行不到的语句;无死语句,即不存在永远都执行不到的语句;无死语句,即不存在永远都执行不到的语句;无死语句,即不存在永远都执行不到的语句;无死循环,即不存在永远都执行不完的循环。无死循环,即不存在永远都执行不完的循环。无死循环,即不存在永远都执行不完的循环。无死循环,即不存在永远都执行不完的循环。采用采用采用采用“自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精”和模块化的方法进行和模块化的方法进行和模块化的方法进行和模块化的方法进行结构化程序设计结

8、构化程序设计结构化程序设计结构化程序设计 2024/5/9 周四7什么是结构化程序设计?什么是结构化程序设计?结构化程序设计语言结构化程序设计语言结构化程序设计语言结构化程序设计语言按照结构化程序设计的要求设计出的语言按照结构化程序设计的要求设计出的语言按照结构化程序设计的要求设计出的语言按照结构化程序设计的要求设计出的语言 结构化程序结构化程序结构化程序结构化程序利用结构化程序设计语言或按照结构化程序设计思想编利用结构化程序设计语言或按照结构化程序设计思想编利用结构化程序设计语言或按照结构化程序设计思想编利用结构化程序设计语言或按照结构化程序设计思想编制出的程序制出的程序制出的程序制出的程序

9、2024/5/9 周四8如何设计结构化的程序?如何设计结构化的程序?Top-down,Stepwise refinementTop-down,Stepwise refinement 自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精自顶向下、逐步求精 19711971年,年,年,年,wirthwirth提出的结构化程序设计方法提出的结构化程序设计方法提出的结构化程序设计方法提出的结构化程序设计方法先全局后局部先全局后局部先全局后局部先全局后局部先整体后细节先整体后细节先整体后细节先整体后细节先抽象后具体先抽象后具体先抽象后具体先抽象后具体2024/5/9 周四9自顶向下、逐步求精的自顶向下

10、、逐步求精的结构化程序设计方法结构化程序设计方法BAA2A2A1A1B2B2B1B1A12A12A11A11A22A22A21A21B12B12B11B11B22B22B21B212024/5/9 周四10算法的概念算法的概念 数据结构数据结构 +算法算法 =程序程序只对面向过程的语言只对面向过程的语言只对面向过程的语言只对面向过程的语言(C)(C)成立成立成立成立 面向对象程序面向对象程序面向对象程序面向对象程序 =对象对象对象对象 +消息消息消息消息 算法:算法:为解决一个具体问题而采取的确定的有限的为解决一个具体问题而采取的确定的有限的为解决一个具体问题而采取的确定的有限的为解决一个具体

11、问题而采取的确定的有限的操作步骤,仅指计算机能执行的算法操作步骤,仅指计算机能执行的算法操作步骤,仅指计算机能执行的算法操作步骤,仅指计算机能执行的算法2024/5/9 周四11算法的特性算法的特性 有穷性有穷性在合理的时间内完成在合理的时间内完成在合理的时间内完成在合理的时间内完成 确定性,无歧义确定性,无歧义 如果如果如果如果x x0000,则输出,则输出,则输出,则输出YesYesYesYes;如果如果如果如果x x0000,则输出,则输出,则输出,则输出NoNoNoNo;有效性有效性 能有效执行能有效执行能有效执行能有效执行负数开平方负数开平方负数开平方负数开平方 没有输入或有多个输入

12、没有输入或有多个输入 有一个或多个输出有一个或多个输出 2024/5/9 周四12算法的分类算法的分类 数值运算算法:数值运算算法:解决求数值解问题解决求数值解问题解决求数值解问题解决求数值解问题 非数值运算算法:非数值运算算法:需要用分析推理、逻辑推理才能解决的问题需要用分析推理、逻辑推理才能解决的问题需要用分析推理、逻辑推理才能解决的问题需要用分析推理、逻辑推理才能解决的问题例如人工智能中的许多问题,查找、分类等例如人工智能中的许多问题,查找、分类等例如人工智能中的许多问题,查找、分类等例如人工智能中的许多问题,查找、分类等2024/5/9 周四13算法的表示方法算法的表示方法 自然语言表

13、示自然语言表示自然语言表示自然语言表示 传统的流程图表示传统的流程图表示传统的流程图表示传统的流程图表示在在在在19661966年,年,年,年,Bohra Bohra 与与与与 Jacopini Jacopini 提出提出提出提出 N-SN-S结构化流程图表示结构化流程图表示结构化流程图表示结构化流程图表示19731973年,美国学者年,美国学者年,美国学者年,美国学者I.Nassi I.Nassi 和和和和 B.Shneiderman B.Shneiderman 提出提出提出提出 伪代码表示伪代码表示伪代码表示伪代码表示起止框起止框输入框输入框判断框判断框处理框处理框流程线流程线连接点连接点

14、注释框注释框2024/5/9 周四14BANS图传统流程图顺序结构顺序结构顺序结构顺序结构BA2024/5/9 周四15BN如果如果 成绩成绩60 yx+1=xAAx 6YBB结束传传传传统统统统流流流流程程程程图图图图打印打印 y2024/5/9 周四20图图 6 6!算法可以用!算法可以用!算法可以用!算法可以用 N-S N-S 图表示如下:图表示如下:图表示如下:图表示如下:1=x2=yx*y=yx+1=x直到直到 x6打印打印 y初始化部分循环部分输出部分2024/5/9 周四21复合语句复合语句 括住的若干条语句构成一个语句块,称为复合括住的若干条语句构成一个语句块,称为复合括住的若

15、干条语句构成一个语句块,称为复合括住的若干条语句构成一个语句块,称为复合语句语句语句语句 语句块内可以定义变量语句块内可以定义变量语句块内可以定义变量语句块内可以定义变量变量仅在定义它的复合语句内有效变量仅在定义它的复合语句内有效变量仅在定义它的复合语句内有效变量仅在定义它的复合语句内有效变量必须在复合语句的开头定义变量必须在复合语句的开头定义变量必须在复合语句的开头定义变量必须在复合语句的开头定义 复合语句可以用在任何可以使用语句的地方复合语句可以用在任何可以使用语句的地方复合语句可以用在任何可以使用语句的地方复合语句可以用在任何可以使用语句的地方2024/5/9 周四22if-else 选

16、择结构的一种最常用形式选择结构的一种最常用形式选择结构的一种最常用形式选择结构的一种最常用形式 if if(表达式表达式表达式表达式)语句语句语句语句1;1;elseelse 语句语句语句语句2;2;语句语句语句语句3 3表达式表达式表达式表达式值值值值非非非非0 0时,执行时,执行时,执行时,执行语句语句语句语句1 1,然后,然后,然后,然后语句语句语句语句3 3;表达式表达式表达式表达式值为值为值为值为0 0时,执行时,执行时,执行时,执行语句语句语句语句2 2,然后,然后,然后,然后语句语句语句语句3 3 语句语句语句语句1 1;语句语句语句语句2 2;2024/5/9 周四23if-e

17、lse elseelse部分可以没有部分可以没有部分可以没有部分可以没有 if if(表达式表达式表达式表达式)语句语句语句语句1;1;语句语句语句语句3 3 if-elseif-else嵌套使用时,注意嵌套使用时,注意嵌套使用时,注意嵌套使用时,注意elseelse和谁配对的问题和谁配对的问题和谁配对的问题和谁配对的问题当当当当表达式表达式表达式表达式值为值为值为值为0 0时,直接执行时,直接执行时,直接执行时,直接执行语句语句语句语句3 3 语句语句语句语句1 1;2024/5/9 周四24例例4.4:年龄判断:年龄判断#include main()int yourAge,hisAge;p

18、rintf(Please enter your age:);scanf(%d,&yourAge);/*输入你的年龄输入你的年龄yourAge*/printf(Please enter your friends age:);scanf(%d,&hisAge);/*输入你朋友的年龄输入你朋友的年龄hisAge*/if(yourAge=hisAge)printf(You are older!Your age is=%dn,yourAge);else printf(Your friend is older!His age is=%dn,hisAge);2024/5/9 周四25条件表达式条件表达式 含

19、义:含义:含义:含义:如果表达式如果表达式如果表达式如果表达式1 1的值非的值非的值非的值非0 0(为真),则该条件(为真),则该条件(为真),则该条件(为真),则该条件表达式的结果就是表表达式的结果就是表表达式的结果就是表表达式的结果就是表达式达式达式达式2 2的值的值的值的值否则,是表达式否则,是表达式否则,是表达式否则,是表达式3 3的值的值的值的值 表达式表达式3N表达式表达式2Y表达式表达式1?表达式表达式2:表达式表达式32024/5/9 周四26例例4.4:年龄判断:年龄判断#include main()int yourAge,hisAge;printf(Please enter

20、 your age:);scanf(%d,&yourAge);/*输入你的年龄输入你的年龄yourAge*/printf(Please enter your friends age:);scanf(%d,&hisAge);/*输入你朋友的年龄输入你朋友的年龄hisAge*/max=(yourAge=hisAge)?yourAge:hisAge;printf(The older age is=%dn,max);2024/5/9 周四27else-if ifif的一种扩展形式的一种扩展形式的一种扩展形式的一种扩展形式相当于相当于相当于相当于elseelse分支嵌套分支嵌套分支嵌套分支嵌套 ifif

21、(表达式表达式表达式表达式1)1)语句语句语句语句1;1;else if else if(表达式表达式表达式表达式2)2)语句语句语句语句2;2;else if else if(表达式表达式表达式表达式3)3)语句语句语句语句3;3;elseelse语句语句语句语句4;4;语句语句语句语句5;5;表达式1 语句1 语句2 语句3 语句4表达式2表达式3 图4-9 多分支选择结构语句语句语句语句1;1;语句语句语句语句2;2;语句语句语句语句3;3;语句语句语句语句4;4;2024/5/9 周四28例例4.5:体型判断:体型判断 按按按按“体指数体指数体指数体指数”对肥胖程度进行划分:对肥胖程度

22、进行划分:对肥胖程度进行划分:对肥胖程度进行划分:体指数体指数体指数体指数t=w/ht=w/h2 2 (体重(体重(体重(体重w w单位为公斤,身高单位为公斤,身高单位为公斤,身高单位为公斤,身高h h单位为米)单位为米)单位为米)单位为米)当当当当t 18t 18时,为低体重;时,为低体重;时,为低体重;时,为低体重;当当当当18 18 t 25 t 25时,为正常体重;时,为正常体重;时,为正常体重;时,为正常体重;当当当当25 t 2725 t 27时,为超重体重;时,为超重体重;时,为超重体重;时,为超重体重;当当当当t t 27 27时,为肥胖。时,为肥胖。时,为肥胖。时,为肥胖。编

23、程从键盘输入你的身高编程从键盘输入你的身高编程从键盘输入你的身高编程从键盘输入你的身高h h和体重和体重和体重和体重w w,根据给定公式计算体指,根据给定公式计算体指,根据给定公式计算体指,根据给定公式计算体指数数数数t t,然后判断你的体重属于何种类型。,然后判断你的体重属于何种类型。,然后判断你的体重属于何种类型。,然后判断你的体重属于何种类型。用用用用3 3种方法编程:种方法编程:种方法编程:种方法编程:算法算法算法算法1 1:用:用:用:用不带不带不带不带elseelse子句的子句的子句的子句的ifif语句语句语句语句编程编程编程编程 算法算法算法算法2 2:用:用:用:用在在在在if

24、if子句中嵌入子句中嵌入子句中嵌入子句中嵌入if if 语句的形式语句的形式语句的形式语句的形式编程编程编程编程 算法算法算法算法3 3:用:用:用:用在在在在elseelse子句中嵌入子句中嵌入子句中嵌入子句中嵌入if if 语句的形式语句的形式语句的形式语句的形式编程编程编程编程 2024/5/9 周四29例例4.5 用不带用不带else子句的子句的if语句编程语句编程#includeinclude main()main()floatfloat h,w,t;h,w,t;printf(Please enter h,w:);printf(Please enter h,w:);scanf(%f,

25、%f,&h,&w);scanf(%f,%f,&h,&w);t=w/(h*h);t=w/(h*h);ifif(t 18t=18&t=18&t=25&t=25&t=27t=27)printf(t=%ftToo fat!n,t);printf(t=%ftToo fat!n,t);当当当当t 18t 18时,为低体重;时,为低体重;时,为低体重;时,为低体重;当当当当18 t 2518 t 25时,为正常体重;时,为正常体重;时,为正常体重;时,为正常体重;当当当当25 t 2725 t 27时,为超重体重;时,为超重体重;时,为超重体重;时,为超重体重;当当当当t 27t 27时,为肥胖。时,为肥胖

26、。时,为肥胖。时,为肥胖。2024/5/9 周四30例例4.5 用在用在if子句中嵌入子句中嵌入if 语句的形式编程语句的形式编程#includeinclude main()main()floatfloat h,w,t;h,w,t;printf(Please enter h,w:);printf(Please enter h,w:);scanf(%f,%f,&h,&w);scanf(%f,%f,&h,&w);t=w/(h*h);t=w/(h*h);ifif(t 27t 27)ifif(t 25t 25)ifif(t 18t 18)printf(t=%ftLower weight!n,t);)p

27、rintf(t=%ftLower weight!n,t);elseelse printf(t=%ftStandard weight!n,t);printf(t=%ftStandard weight!n,t);elseelse printf(t=%ftHigher weight!n,t);printf(t=%ftHigher weight!n,t);elseelse printf(t=%ftToo fat!n,t);printf(t=%ftToo fat!n,t);18 25 2718 25 27当当当当t 18t 18时,为低体重;时,为低体重;时,为低体重;时,为低体重;当当当当18 t 2

28、518 t 25时,为正常体重;时,为正常体重;时,为正常体重;时,为正常体重;当当当当25 t 2725 t 27时,为超重体重;时,为超重体重;时,为超重体重;时,为超重体重;当当当当t 27t 27时,为肥胖。时,为肥胖。时,为肥胖。时,为肥胖。2024/5/9 周四31例例4.5 用在用在else子句中子句中嵌入嵌入if语句的形式编程语句的形式编程#includeinclude main()main()floatfloat h,w,t;h,w,t;printf(Please enter h,w:);printf(Please enter h,w:);scanf(%f,%f,&h,&w)

29、;scanf(%f,%f,&h,&w);t=w/(h*h);t=w/(h*h);ifif(t 18)(t 18)printf(t=%ftLower weight!n,t);printf(t=%ftLower weight!n,t);else ifelse if(t 25)(t 25)printf(t=%ftStandard weight!n,t);printf(t=%ftStandard weight!n,t);else ifelse if(t 27)(t 27)printf(t=%ftHigher weight!n,t);printf(t=%ftHigher weight!n,t);else

30、elseprintf(t=%ftToo fat!n,t);printf(t=%ftToo fat!n,t);当当当当t 18t 18时,为低体重;时,为低体重;时,为低体重;时,为低体重;当当当当18 t 2518 t 25时,为正常体重;时,为正常体重;时,为正常体重;时,为正常体重;当当当当25 t 2725 t 27时,为超重体重;时,为超重体重;时,为超重体重;时,为超重体重;当当当当t 27t 27时,为肥胖。时,为肥胖。时,为肥胖。时,为肥胖。18 25 2718 25 272024/5/9 周四32switch 多路选择多路选择多路选择多路选择 switchswitch(表达式表

31、达式表达式表达式)casecase 常数常数常数常数1:1:语句序列语句序列语句序列语句序列1;1;casecase 常数常数常数常数2:2:语句序列语句序列语句序列语句序列2;2;defaultdefault:语句序列语句序列语句序列语句序列3;3;defaultdefault可以没有,但最好不省略可以没有,但最好不省略可以没有,但最好不省略可以没有,但最好不省略 不要忘记不要忘记不要忘记不要忘记breakbreak语句序列语句序列语句序列语句序列1;1;语句序列语句序列语句序列语句序列2;2;语句序列语句序列语句序列语句序列n;n;2024/5/9 周四33例例4.8:计算器程序:计算器程

32、序 编程设计一个简单的计算器程序,要求根据用户编程设计一个简单的计算器程序,要求根据用户编程设计一个简单的计算器程序,要求根据用户编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式:从键盘输入如下形式的表达式:从键盘输入如下形式的表达式:从键盘输入如下形式的表达式:操作数操作数操作数操作数1 1 运算符运算符运算符运算符op op 操作数操作数操作数操作数2 2 然后,计算并输出表达式的值然后,计算并输出表达式的值然后,计算并输出表达式的值然后,计算并输出表达式的值 指定的运算符为指定的运算符为指定的运算符为指定的运算符为 加(加(加(加(+)减(减(减(减(-)乘(乘(乘(

33、乘(*)除(除(除(除(/)2024/5/9 周四34mainmain()()intint data1,data2;/*data1,data2;/*定义两个操作符定义两个操作符定义两个操作符定义两个操作符*/charchar op;/*op;/*定义运算符定义运算符定义运算符定义运算符*/printf(Please enter the expression:);printf(Please enter the expression:);scanf(%d%c%d,&data1,&op,&data2);/*scanf(%d%c%d,&data1,&op,&data2);/*输入运算表达式输入运算表达

34、式输入运算表达式输入运算表达式*/switchswitch(op)(op)casecase+:/*+:/*处理加法处理加法处理加法处理加法*/printf(%d+%d=%dn,data1,data2,data1+data2);printf(%d+%d=%dn,data1,data2,data1+data2);breakbreak;casecase-:/*-:/*处理减法处理减法处理减法处理减法*/printf(%d-%d=%dn,data1,data2,data1-data2);printf(%d-%d=%dn,data1,data2,data1-data2);breakbreak;casec

35、ase*:/*:/*处理乘法处理乘法处理乘法处理乘法*/printf(%d*%d=%dn,data1,data2,data1*data2);printf(%d*%d=%dn,data1,data2,data1*data2);breakbreak;casecase/:/*/:/*处理除法处理除法处理除法处理除法*/ifif(0=data20=data2)printf(Division by zero!n);printf(Division by zero!n);elseelse printf(%d/%d=%dn,data1,data2,data1/data2);printf(%d/%d=%dn,d

36、ata1,data2,data1/data2);breakbreak;defaultdefault:printf(Unknown operator!n);printf(Unknown operator!n);例例4.82024/5/9 周四35思考题思考题 语句语句语句语句 if(0=data2)if(0=data2)的必要性的必要性的必要性的必要性19981998年年年年1111月月月月科学美国人科学美国人科学美国人科学美国人杂志,描述了美国导弹巡杂志,描述了美国导弹巡杂志,描述了美国导弹巡杂志,描述了美国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统洋舰约克敦号上的一起事故,除零错

37、导致军舰推进系统洋舰约克敦号上的一起事故,除零错导致军舰推进系统洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭的关闭的关闭的关闭 如果要求程序能进行浮点数的算术运算,语句如果要求程序能进行浮点数的算术运算,语句如果要求程序能进行浮点数的算术运算,语句如果要求程序能进行浮点数的算术运算,语句 if if(0=data2)(0=data2)还能用于比较实型变量还能用于比较实型变量还能用于比较实型变量还能用于比较实型变量data2data2和和和和常数常数常数常数0 0的大小吗?的大小吗?的大小吗?的大小吗?if(if(fabsfabs(data2)=1e-7)(data2)=1e-7)如果

38、要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改?间可以加入任意多个空格符,那么程序如何修改?间可以加入任意多个空格符,那么程序如何修改?间可以加入任意多个空格符,那么程序如何修改?scanf(%d%scanf(%d%c c%d,&data1,&op,&data2);%d,&data1,&op,&data2);scanf(%d%scanf(%d%1s1s%d,&data1,&op,&data2);%d,&data1,&op,&da

39、ta2);取绝对取绝对取绝对取绝对值函数值函数值函数值函数2024/5/9 周四36作业作业 P143152P143152习题习题习题习题4.7,4.94.7,4.92024/5/9 周四37循环循环while语句,语句,for语句语句 whilewhile(表达式表达式表达式表达式)语句语句语句语句;forfor(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3)3)语句语句语句语句;语句语句语句语句;语句语句语句语句;2024/5/9 周四38while语句语句 whilewhile(表达式表达式表达式表达式)语句语句语句语句;只要只要只要只要表达

40、式表达式表达式表达式的值为的值为的值为的值为非非非非0 0,就重,就重,就重,就重复执行复执行复执行复执行语句语句语句语句,直到,直到,直到,直到表达式表达式表达式表达式值值值值为为为为0 0时止时止时止时止语句语句语句语句真假假假语句语句语句语句;2024/5/9 周四39for语句语句 forfor(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3)3)语句语句语句语句;首先执行首先执行首先执行首先执行表达式表达式表达式表达式1 1。如果。如果。如果。如果表达式表达式表达式表达式2 2的值为的值为的值为的值为非非非非0 0,就重复执,就重复执,就重

41、复执,就重复执行行行行语句语句语句语句和和和和表达式表达式表达式表达式3 3,直到,直到,直到,直到表达式表达式表达式表达式2 2的值为的值为的值为的值为0 0时止时止时止时止语句语句语句语句;循环起始条件循环起始条件循环结束条件循环结束条件循环增量循环增量2024/5/9 周四40for语句语句 forfor(表达式表达式表达式表达式1;1;表达式表达式表达式表达式2;2;表达式表达式表达式表达式3)3)语句语句语句语句;相当于:相当于:相当于:相当于:表达式表达式表达式表达式1 1和和和和表达式表达式表达式表达式3 3可以没有或者是用逗号分隔的多可以没有或者是用逗号分隔的多可以没有或者是用

42、逗号分隔的多可以没有或者是用逗号分隔的多个表达式的组合。但最好不要有太多的表达式组合个表达式的组合。但最好不要有太多的表达式组合个表达式的组合。但最好不要有太多的表达式组合个表达式的组合。但最好不要有太多的表达式组合语句语句语句语句;表达式表达式表达式表达式1;1;whilewhile(表达式表达式表达式表达式2)2)语句语句语句语句;表达式表达式表达式表达式3;3;2024/5/9 周四41do-while语句语句 dodo 语句语句语句语句;whilewhile(表达式表达式表达式表达式););首先执行首先执行首先执行首先执行语句语句语句语句,然后判断,然后判断,然后判断,然后判断表达表达

43、表达表达式式式式的值。如果表达式为的值。如果表达式为的值。如果表达式为的值。如果表达式为0 0,继续,继续,继续,继续向下执行,否则,再次执行向下执行,否则,再次执行向下执行,否则,再次执行向下执行,否则,再次执行语语语语句句句句,再次判断,再次判断,再次判断,再次判断表达式表达式表达式表达式的值的值的值的值 语句语句语句语句会被至少执行一次会被至少执行一次会被至少执行一次会被至少执行一次语句语句语句语句假假真真语句语句语句语句;2024/5/9 周四42A当型循环当型循环直到循环直到循环真假假A假真假A假当循环条件第一次就为假时当循环条件第一次就为假时当循环条件第一次就为假时当循环条件第一次

44、就为假时2024/5/9 周四43选择三种循环的一般原则选择三种循环的一般原则 如果循环次数已知,用如果循环次数已知,用如果循环次数已知,用如果循环次数已知,用forfor 如果循环次数未知,用如果循环次数未知,用如果循环次数未知,用如果循环次数未知,用whilewhile 如果循环体至少要执行一次,用如果循环体至少要执行一次,用如果循环体至少要执行一次,用如果循环体至少要执行一次,用do-whiledo-while 这只是这只是这只是这只是“一般一般一般一般”原则,不是原则,不是原则,不是原则,不是“原则原则原则原则”2024/5/9 周四44注意注意 在在在在forfor和和和和while

45、while语句之后一般没有分号语句之后一般没有分号语句之后一般没有分号语句之后一般没有分号 有分号表示循环体就是分号之前的内容(空循环体)有分号表示循环体就是分号之前的内容(空循环体)有分号表示循环体就是分号之前的内容(空循环体)有分号表示循环体就是分号之前的内容(空循环体)whilewhile(i 100)(i 100);i+;i+;forfor(i=0;i 100;i+)(i=0;i 100;i+);printf(%d,i);printf(%d,i);forfor通常有一个循环变量控制循环的次数,不要在循通常有一个循环变量控制循环的次数,不要在循通常有一个循环变量控制循环的次数,不要在循通

46、常有一个循环变量控制循环的次数,不要在循环体内改变这个变量环体内改变这个变量环体内改变这个变量环体内改变这个变量2024/5/9 周四45现场编程计算现场编程计算1+2+100=?分别用如下语句编程分别用如下语句编程分别用如下语句编程分别用如下语句编程forforwhilewhiledo-whiledo-while 单步跟踪执行程序,且使用监视窗观测变量值单步跟踪执行程序,且使用监视窗观测变量值单步跟踪执行程序,且使用监视窗观测变量值单步跟踪执行程序,且使用监视窗观测变量值的变化的变化的变化的变化2024/5/9 周四46循序渐进式编程循序渐进式编程例例4.6:猜数游戏猜数游戏想一个想一个11

47、00之间的数之间的数猜对猜对:right猜错猜错:wrong并提示大并提示大小小2024/5/9 周四47只猜1次直到猜对为止最多猜10次猜多个数10次猜不对就猜下一个数循序渐进式编程循序渐进式编程例例4.6:猜数游戏:猜数游戏2024/5/9 周四48猜数游戏用到的库函数猜数游戏用到的库函数 怎样模拟计算机怎样模拟计算机怎样模拟计算机怎样模拟计算机“想想想想”一个数呢?一个数呢?一个数呢?一个数呢?随机函数随机函数随机函数随机函数rand()rand()产生产生产生产生0,RAND_MAX0,RAND_MAX 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand();magi

48、c=rand();#include#include RAND_MAXRAND_MAX在在在在stdlib.hstdlib.h中定义,不大于双字节整数中定义,不大于双字节整数中定义,不大于双字节整数中定义,不大于双字节整数的最大值的最大值的最大值的最大值32767 32767 产生产生产生产生0,b-1 0,b-1 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand()%b;magic=rand()%b;产生产生产生产生a,a+b-1 a,a+b-1 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand()%b+a;magic=rand()%b+a;2024/5

49、/9 周四49例例4.6#includeinclude#includeinclude main()main()intint magic;/*magic;/*计算机计算机计算机计算机 想想想想 的数的数的数的数*/intint guess;/*guess;/*人猜的数人猜的数人猜的数人猜的数*/magic=rand()%100+1;magic=rand()%100+1;/*“/*“想想想想”一个一个一个一个11,100100之间的数之间的数之间的数之间的数magic*/magic*/printf(Please guess a magic number:);printf(Please guess

50、a magic number:);scanf(%d,&guess);scanf(%d,&guess);ifif(guess magic)(guess magic)printf(Wrong!Too high!n);printf(Wrong!Too high!n);else ifelse if(guess magic)(guess magic)printf(Wrong!Too low!n);printf(Wrong!Too low!n);elseelse printf(Right!n);printf(Right!n);printf(The number is:%d n,magic);printf(

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服