C-程序设计(第3章)new解析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C-程序设计(第3章)new解析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 new 解析 课件
- 资源描述:
-
1、C/C+程序设计教程郑秋生 主编11/14/20221第第3章章 C+流程控制流程控制 n本章学习重点掌握内容:本章学习重点掌握内容:n结构化程序设计的程序结构结构化程序设计的程序结构n选择结构和构成选择的语句选择结构和构成选择的语句n循环结构和构成循环的语句循环结构和构成循环的语句n结构化程序设计的典型算法和应用结构化程序设计的典型算法和应用11/14/20222第第3章章 C+流程控制流程控制n3.1 算法与流程图算法与流程图n3.2 C+语句和程序的三种基本结构语句和程序的三种基本结构n3.3 顺序结构程序顺序结构程序n3.4 选择结构程序选择结构程序n3.5 循环结构程序设计循环结构程
2、序设计n3.6 常用算法及应用实例常用算法及应用实例11/14/202233.1 算法与流程图算法与流程图 3.1.1 算法的概念算法的概念 所谓算法,是指为了解决一个问题而采取的方法和步所谓算法,是指为了解决一个问题而采取的方法和步骤。当利用计算机来解决一个具体问题时,也要首先骤。当利用计算机来解决一个具体问题时,也要首先确定算法。确定算法。例如,要计算例如,要计算S=1+2+3+100,算法是程序设计的算法是程序设计的灵魂灵魂,而程序设计语言是,而程序设计语言是表达算法表达算法的形式的形式。11/14/202243.1.2 算法的描述算法的描述一、传统流程图一、传统流程图流程图由一些特定意
3、义的图形、流流程图由一些特定意义的图形、流程线及简要的文字说明构成,它能程线及简要的文字说明构成,它能清晰明确地表示程序的运行过程,清晰明确地表示程序的运行过程,传统流程图由以下图形组成:传统流程图由以下图形组成:11/14/202253.1.2 算法的描述算法的描述二、N-S图在这种流程图中,全部算法写在一个大矩形框内,该在这种流程图中,全部算法写在一个大矩形框内,该框中还可以包含一些从属于它的小矩形框。例如网上框中还可以包含一些从属于它的小矩形框。例如网上购物的购物的N-S图图 11/14/202263.2 C+语句和程序的三种基本结构语句和程序的三种基本结构 语句是程序中最小的可执行单位
4、。一条语句可以语句是程序中最小的可执行单位。一条语句可以完成一种基本操作,完成一种基本操作,3.2.1 C+C+语句语句1 1表达式语句表达式语句任何一个表达式后面加上分号;任何一个表达式后面加上分号;例如:例如:c=a+b;2 2空语句空语句 ;3 3复合语句复合语句复合语句是用一对花括号复合语句是用一对花括号 括起来的语句块。括起来的语句块。4 4控制语句控制语句控制语句改变程序执行的方向。例如:控制语句改变程序执行的方向。例如:if语句、语句、for语语句等。句等。11/14/202273.2.2 C+程序的三种基本结构程序的三种基本结构 在过程化程序设计中,按照结构化设计的思想由语句在
5、过程化程序设计中,按照结构化设计的思想由语句构成三种基本结构。构成三种基本结构。n1顺序结构顺序结构 程序按照语句的书写顺序依次执行,语句在前的先执程序按照语句的书写顺序依次执行,语句在前的先执行,语句在后的后执行,顺序结构只能满足设计简单行,语句在后的后执行,顺序结构只能满足设计简单程序的要求。程序的要求。n2.选择结构(也称分支结构)选择结构(也称分支结构)在选择结构中,程序根据判断条件是否成立,来选择在选择结构中,程序根据判断条件是否成立,来选择执行不同的程序段。执行不同的程序段。n3.循环结构循环结构 在循环结构中,程序根据判断条件是否成立,来决定在循环结构中,程序根据判断条件是否成立
6、,来决定是否重复执行某个程序段。是否重复执行某个程序段。11/14/202283.2.3 结构化算法结构化算法解决任何一个复杂的问题,都可以由解决任何一个复杂的问题,都可以由3种基本结构来种基本结构来完成:顺序结构,选择结构,循环结构。由这完成:顺序结构,选择结构,循环结构。由这3种基本种基本结构构成的算法称为结构化算法,它不存在无规律的结构构成的算法称为结构化算法,它不存在无规律的转移,只有在本结构内才允许存在分支或者向前向后转移,只有在本结构内才允许存在分支或者向前向后的跳转。由结构化算法编写的程序称为结构化程序。的跳转。由结构化算法编写的程序称为结构化程序。结构化程序便于阅读和修改,提高
7、了程序的可读性和结构化程序便于阅读和修改,提高了程序的可读性和可维护性。可维护性。11/14/202293.3 顺序结构程序顺序结构程序【例例3.13.1】“鸡兔同笼鸡兔同笼”问题。鸡有问题。鸡有2 2只脚,兔有只脚,兔有4 4只脚,只脚,如果已知鸡和兔的总头数为如果已知鸡和兔的总头数为h h,总脚数为,总脚数为f f。问笼中鸡。问笼中鸡和兔各有多少只?和兔各有多少只?11/14/202210“鸡兔同笼鸡兔同笼”问题问题#include int main()int h,f,x,y;couth;coutf;x=(4*h-f)/2;y=(f-2*h)/2;cout则笼中鸡有则笼中鸡有 x 只,兔有
8、只,兔有 y 只。只。endl;return 0;11/14/2022113.4 选择结构程序选择结构程序 它能根据给定条件,从事先编写好的各个不同分它能根据给定条件,从事先编写好的各个不同分支中执行并且仅执行某一分支的相应操作。支中执行并且仅执行某一分支的相应操作。11/14/2022123.4.1 if语句语句 if语句语法格式为:语句语法格式为:if(表达式表达式)语句语句1;else 语句语句2;if语句的语句语句的语句2可以为空可以为空.【例例3.2】输入一个年份,判断是否闰年。闰年的年份必输入一个年份,判断是否闰年。闰年的年份必须满足以下两个条件之一:须满足以下两个条件之一:(1)
9、能被)能被4整除,但不能被整除,但不能被100整除的年份都是闰年。整除的年份都是闰年。(2)能被)能被400整除的年份都是闰年。整除的年份都是闰年。11/14/2022133.4.1 if语句语句 分析:设变量分析:设变量year表示年份,判断表示年份,判断year是否满足是否满足条件(条件(1)的逻辑表达式是:)的逻辑表达式是:year%4=0&year%100!=0条件(条件(2)的逻辑表达式是:)的逻辑表达式是:year%400=0两者取两者取“或或”,即得判断闰年的逻辑表达式:,即得判断闰年的逻辑表达式:(year%4=0&year%100!=0)|year%400=0#include
10、 int main()int year;cout输入年份输入年份:year;if(year%4=0&year%100!=0|year%400=0)coutyear是闰年是闰年endl;else cout year不是闰年不是闰年score80为良,为良,80score70为中等,为中等,70score60为及格,为及格,score60为不及格。为不及格。#include int main()int score;cout score;if(score=90)cout 优优 =80)cout 良良 =70)cout 中中 =60)cout 及格及格 endl;else cout 不及格不及格 en
11、dl;return 0;11/14/2022173.4.2 嵌套嵌套if语句语句n第二种是嵌套在第二种是嵌套在if分支中为:分支中为:if(表达式表达式1)if(表达式表达式2)语句语句1;else 语句语句2;要特别注意要特别注意else和和if的配对关系。的配对关系。C+规定了规定了if和和else的的“就近配对就近配对”原则,即相距最近且还没有配对原则,即相距最近且还没有配对的一对的一对if和和else首先配对。首先配对。如果根据程序的逻辑需要改变配对关系,则要将属于如果根据程序的逻辑需要改变配对关系,则要将属于同一层的语句放在一对同一层的语句放在一对“”中。中。11/14/202218
12、3.4.2 嵌套嵌套if语句语句请看以下两个语句:请看以下两个语句:语句语句1:if(n%3=0)if(n%5=0)coutn“是是15的倍数的倍数”;else coutn“是是3的倍数但不是的倍数但不是5的倍数的倍数”;语句语句2:if(n%3=0)if(n%5=0)coutn“是是15的倍数的倍数”;else coutn“是是3的倍数但不的倍数但不是是5的倍数的倍数”endl;11/14/202219条件运算符条件运算符“?:”格式为:格式为:表达式表达式1?表达式表达式2:表达式表达式3。【例【例3.5】输入一个字符,判别它是否为大写字母,如果输入一个字符,判别它是否为大写字母,如果是,
13、将它转换成小写字母;如果不是,不转换。然后是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。输出最后得到的字符。分析:大写字母转换成小写字母,由于小写字母分析:大写字母转换成小写字母,由于小写字母ASCII值比大写字母值比大写字母ASCII值大值大32,所以加,所以加32可以实现大写可以实现大写字母转换成小写字母。字母转换成小写字母。11/14/202220条件运算符条件运算符“?:”#include int main()char ch;cinch;ch=(ch=A&ch=Z)?(ch+32):ch;/判别判别ch是否大写是否大写字母,是则转换字母,是则转换 coutchend
14、l;return 0;11/14/2022213.4.3 swich语句用嵌套用嵌套if语句可以实现多选一的情况。语句可以实现多选一的情况。switch语句,语句,称为多分支语句(开关语句),可以用来实现多选称为多分支语句(开关语句),可以用来实现多选一:一:switch语句语法格式为:语句语法格式为:switch(表达式表达式)case常量表达式常量表达式1:语句序列语句序列1;break;case常量表达式常量表达式2:语句序列语句序列2;break;case常量表达式常量表达式n:语句序列语句序列n;break;default:语句序列语句序列n+1;11/14/202222swich语
15、句(1)各个)各个case(包括(包括default)分支出现的次序)分支出现的次序可以任意,通常将可以任意,通常将default放在最后。放在最后。(2)break语句可选语句可选(3)每个常量表达式的取值必须各不相同)每个常量表达式的取值必须各不相同(4)允许多个常量表达式对应同一个语句序列。)允许多个常量表达式对应同一个语句序列。(5)开关语句中限定了条件表达式的取值类型。开关语句中限定了条件表达式的取值类型。【例例3.6】用用switch语句实现例语句实现例3.4的功能。的功能。分析:由题意可知分析:由题意可知10分一个等级,采用分一个等级,采用score/10整除可以得到等级。整除可
16、以得到等级。11/14/202223swich语句#includeint main()int score;int a;coutscore;a=score/10;switch(a)case 10:case 9:cout 优优 endl;break;case 8:cout 良良 endl;break;case 7:cout 中中 endl;break;case 6:cout 及格及格 endl;break;default:cout不及格不及格 endl;return 0;11/14/2022243.5 循环结构程序设计循环结构程序设计 3.5.1 while语句3.5.2 do-while语句3.
17、5.3 for循环语句3.5.4 循环的嵌套3.5.5 转向语句3.5.6 三种循环的比较11/14/2022253.5.1 while语句while语句的语法格式如下:语句的语法格式如下:while(表达式表达式)循环体语句循环体语句11/14/2022263.5.1 while语句【例例3.8】求求1+2+3+100。n分析:计算累加和需要两个变量,设用变量分析:计算累加和需要两个变量,设用变量sum存放存放累加和,变量累加和,变量i存放加数。重复将加数存放加数。重复将加数i加到加到sum中。中。#include int main()int i=1,sum=0;while(i=100)su
18、m=sum+i;i+;coutsum=sumendl;return 0;11/14/2022273.5.2 do-while语句语法格式如下:语法格式如下:do 循环体语句循环体语句 while(表达式表达式);11/14/2022283.5.2 do-while语句【例例3.11】do-while语句求语句求1+2+3+100#include int main()int i=1,sum=0;do sum=sum+i;i+;while(i=100);coutsum=sumendl;return 0;11/14/2022293.5.2 do-while语句【例例】输入两个正整数,求它们最大公输入
19、两个正整数,求它们最大公约数。约数。分析:求最大公约数可以用分析:求最大公约数可以用“辗转相除辗转相除法法”,方法如下:,方法如下:(1)比较两数,并使)比较两数,并使m大于大于n。(2)将)将m作被除数,作被除数,n作除数,相除后作除数,相除后余数为余数为r。(3)将)将mn,nr;(4)若)若r=0,则,则m为最大公约数,结为最大公约数,结束循环。若束循环。若r0,执行步骤步骤(,执行步骤步骤(2)和(和(3)。)。11/14/202230求两个正整数最大公约数求两个正整数最大公约数#include int main()int m,n,r,t;int m1,n1;coutm;coutn;m
20、1=m;n1=n;/保存原始数据供输出使用保存原始数据供输出使用 if(m n)t=m;m=n;n=t;/m,n交换值交换值 dor=m%n;m=n;n=r;while(r!=0);coutm1和和n1的最大公约数是的最大公约数是m;return 0;11/14/202231计算级数和#includeint main()int k;double sum,d,f;sum=0;k=1;f=1;do d=1.0/(k*(k+1);sum=sum+f*d;k=k+1;f=-f;while(d=1.0e-4);printf(sum=%lfn,sum);return 0;11/14/2022323.5.3
21、 for循环语句for循环语句的语法格式如下:循环语句的语法格式如下:for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体语句循环体语句n该语句的执行过程是图该语句的执行过程是图3-14 11/14/2022333.5.3 for循环语句n【例例3.14】求求1+2+3+100。用。用for语句实现循环。语句实现循环。#includeint main()int i,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;coutsum=sumendl;return 0;11/14/2022343.5.3 for循环语句n【例例3.15】打印出所有的打印出所有的“
22、水仙花数水仙花数”,所谓,所谓“水仙花水仙花数数”是指一个三位数,其各位数字立方和等于该数本身。是指一个三位数,其各位数字立方和等于该数本身。例如:例如:153是一个是一个“水仙花数水仙花数”,因为,因为153=135333。n分析:利用分析:利用for循环控制循环控制100-999之间的数,每个数分之间的数,每个数分解出个位,十位,百位;然后判断立方和是否等于该数解出个位,十位,百位;然后判断立方和是否等于该数本身。本身。11/14/202235打印出所有的“水仙花数”#include int main()int a,b,c;for(int i=100;i1000;i+)a=i%10;/分解
23、出个位分解出个位b=(i/10)%10;/分解出十位分解出十位c=i/100;/分解出百位分解出百位if(a*a*a+b*b*b+c*c*c=i)coutit;coutendl;return 0;11/14/202236省略for循环语句中的表达式for循环语句中循环语句中3个表达式都可省略。个表达式都可省略。n(1)for语句中的语句中的“表达式表达式1”一般用于给循环变量赋初值;一般用于给循环变量赋初值;如果省略如果省略for语句中的语句中的“表达式表达式1”,此时应在,此时应在for语句之语句之前给循环变量赋初值。前给循环变量赋初值。n(2)for语句中的语句中的“表达式表达式2”一般用
24、于判断循环结束条件;一般用于判断循环结束条件;如果表达式如果表达式2省略,即不判断循环条件,循环无终止地进省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式行下去。也就是认为表达式2始终为真。始终为真。n(3)for语句中的语句中的“表达式表达式3”一般用于循环变量的增量;一般用于循环变量的增量;如果表达式如果表达式3省略,则循环变量的增量应在循环体内实现。省略,则循环变量的增量应在循环体内实现。n(4)如果省略如果省略for语句中的语句中的3个表达式,则成为以下形式:个表达式,则成为以下形式:for(;)11/14/2022373.5.4 循环的嵌套 在一个循环的循环体中又包含另
展开阅读全文