书签 分享 收藏 举报 版权申诉 / 67
上传文档赚钱

类型第2章程序控制结构NEW课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:3860839
  • 上传时间:2022-10-19
  • 格式:PPT
  • 页数:67
  • 大小:308.66KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第2章程序控制结构NEW课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    章程 控制 结构 NEW 课件
    资源描述:

    1、1第第2章章 程序控制结构程序控制结构2.1 顺序结构顺序结构 2.2 选择结构选择结构 2.3 循环结构循环结构 2.4 控制转向语句控制转向语句 2.5 程序实例程序实例 2v按照语句出现的先后顺序依次执行。按照语句出现的先后顺序依次执行。2.1 顺序结构顺序结构 语句1语句2图2.1 顺序结构流程图32.1.1 定义语句定义语句 在在C+程序中,一个标识符(变量名、常程序中,一个标识符(变量名、常量名、函数名、对象名等)在使用之前必须先量名、函数名、对象名等)在使用之前必须先定义。定义。定义语句定义语句是在给出其特征同时,并通知是在给出其特征同时,并通知编译器为其分配存储空间,而编译器为

    2、其分配存储空间,而说明语句说明语句仅告诉仅告诉编译器它的存在及其特征。编译器它的存在及其特征。v例如:例如:int x=1,y=2;/定义语句const double PI=3.14159;/定义语句float score303;/定义语句42.1.2 表达式语句表达式语句v形式:形式:;v可以进行的操作通常包括赋值操作,复合赋值可以进行的操作通常包括赋值操作,复合赋值操作,增量、减量操作,函数调用操作和输入操作,增量、减量操作,函数调用操作和输入输出操作。输出操作。v例如:例如:n+;-m;abs(x);cinxy;coutx+y;s=x+y;m=n=t;a=10,b=20;z*=w;52.

    3、1.3 复合语句复合语句v形式:形式:v作用:作用:当程序中某个位置在语法上只允许一条当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句操作时,需要使用复合语句。例如:例如:if(x=0)couta;coutb;62.1.4 空语句空语句v形式:形式:;v作用:作用:当程序中某个位置在语法上需要一当程序中某个位置在语法上需要一条语句,而在语义上又不条语句,而在语义上又不 要求执行任何动要求执行任何动作时,可放上一条空语句。作时,可放上一条空语句。v一般适用于在循环语句中做空循环体一般适用于在循环语句中做

    4、空循环体v例如:例如:for(m=0;m1000;m+);72.1.5 基本输入输出基本输入输出v在在C+中,所有输入输出是通过中,所有输入输出是通过输入输出流输入输出流来实现的。来实现的。v在在C+中,将数据从一个对象到另一个对象的流动抽中,将数据从一个对象到另一个对象的流动抽象为象为“流流”。在。在iostream库中包含一个标准输入流对象库中包含一个标准输入流对象cin和一个标准输出流对象和一个标准输出流对象cout,分别用来实现从键,分别用来实现从键盘读取数据,以及将数据在屏幕上输出。盘读取数据,以及将数据在屏幕上输出。v要使用要使用cin和和cout,需要在,需要在C+程序开头加上如

    5、下包程序开头加上如下包含命令:含命令:#include /新标准中的头文件名新标准中的头文件名using namespace std;/引入引入std名字空间中的标识符名字空间中的标识符81.标准输入流标准输入流cinvcin负责从键盘读取数据,使用负责从键盘读取数据,使用提取运算符提取运算符“”就就可以将键盘键入的数据读入到变量中。可以将键盘键入的数据读入到变量中。v语法格式:语法格式:cin变量变量1变量变量2变量变量n;变量可以是任意数据类型,输入时各个数据之间用变量可以是任意数据类型,输入时各个数据之间用空格键、空格键、Tab键或键或Enter键分隔。键分隔。v 例如:例如:int x

    6、,y;cinxy;键盘上输入:键盘上输入:58 x5键盘键盘y8键盘键盘92.标准输出流标准输出流coutv负责将数据输出到屏幕上,使用负责将数据输出到屏幕上,使用插入运算符插入运算符“”就可以将数据显示在屏幕上当前光标所就可以将数据显示在屏幕上当前光标所在位置。在位置。v语法格式:语法格式:cout表达式表达式1表达式表达式2表达式表达式n;表达式可以是任意类型的,数据输出的格式表达式可以是任意类型的,数据输出的格式由系统自动决定。由系统自动决定。101112【例【例2.1】cout应用示例应用示例#include using namespace std;int main()int x=12

    7、,y=83;double pai_1=3.14159265;float pai_2=3.141f;char ch1=a,ch2=b;bool ok=true;coutx=xendl;couty=yendl;coutpai_1=pai_1,pai_2=pai_2endl;coutch1=ch1,ch2=ch2endl;coutok=okendl;cout!ok=!okendl;return 0;x=12y=83pai_1=3.14159,pai_2=3.141ch1=a,ch2=bok=1!ok=013【例【例2.2】使用格式控制符输出数据使用格式控制符输出数据#include#include

    8、using namespace std;int main()int a=35;double b=21.3456789;cout1234567890123endl;coutdeca hexa octaendl;coutbendl;coutsetprecision(4)bendl;coutsetw(10)bendl;coutsetw(10)setfill(*)bendl;coutsetiosflags(ios:scientific)bendl;coutsetprecision(3)bendl;coutsetprecision(2)bb,则将,则将a、b交换,否则不交换。两数交换,否则不交换。两数交

    9、换可采用借助于第三个变量间接交换的方法交换可采用借助于第三个变量间接交换的方法 if(ab)t=a;a=b;b=t;17#include using namespace std;int main()int a,b,t;cout请输入两个整数请输入两个整数a,b:ab;if(ab)t=a;a=b;b=t;coutabendl;return 0;a=a+b;b=a-b;a=a-b;请输入两个整数请输入两个整数a,b:85 404085a=ab;b=ab;a=ab;182if-else语句(双分支)语句(双分支)if(表达式表达式)语句语句1 else 语句语句2true表达表达式式语句语句1fal

    10、se语句语句2双分支双分支if语句流程图语句流程图19【例【例2.4】输入一个年份,判断是否为闰年。】输入一个年份,判断是否为闰年。v分析分析 闰年的年份可以被闰年的年份可以被4整除而不能被整除而不能被100整除,整除,或者能被或者能被400整除。整除。#include using namespace std;int main()int year;coutyear;if(year%4=0&year%100!=0)|(year%400=0)coutyear年是闰年年是闰年endl;else coutyear年不是闰年年不是闰年endl;return 0;203if-else if 语句(多分支)

    11、语句(多分支)if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式n)语句语句n else 语句语句n+1falsefalsefalsetruetrue表达式1表达式2表达式n语句n语句n+1语句2语句1true21【例例2.5】根据x的值,计算分段函数y的值。y的计算公式为:5cos(79)lnxxexyxxx(x0)(0 x15)(15x30)(x30)22#include#include using namespace std;int main()double x,y;coutx;if(x0)y=fabs(x);else if(x15

    12、)y=exp(x)*cos(x);else if(x30)y=pow(x,5);else y=(7+9*x)*log(x);couty=y0)if(y0)coutx与与y均大于均大于0;else coutx大于大于0,y小于等于小于等于0;v注意:注意:如何使之与如何使之与第一个第一个if配配对?对?25【例【例2.62.6】从键盘上输入两个字符,比较其大小,输出大】从键盘上输入两个字符,比较其大小,输出大于、等于和小于的判断结果。于、等于和小于的判断结果。#include using namespace std;int main()char ch1,ch2;coutch1ch2;if(ch1

    13、!=ch2)if(ch1ch2)coutch1大于大于ch2endl;else coutch1小于小于ch2endl;elsecoutch1等于等于ch2endl;return 0;请输入两个字符:请输入两个字符:h dh大于大于d请输入两个字符:请输入两个字符:X YX小于小于Y请输入两个字符:请输入两个字符:&等于等于&262.2.2 switch语句语句switch(表达式表达式)case 常量表达式常量表达式1:语句语句组组1 case 常量表达式常量表达式2:语句语句组组2 case 常量表达式常量表达式n:语句语句组组n default:语句语句组组n+1 注意:表达式只能是整型、

    14、注意:表达式只能是整型、字符型或枚举型字符型或枚举型注意:常量表达注意:常量表达式式1n的值必须各的值必须各不相同。不相同。27有有无无无无false有有无无falsetrue计算表达式的值计算表达式的值常量表达式常量表达式1语句语句1break常量表达式常量表达式2语句语句2break无无有有false常量表达式常量表达式ntrue语句语句nbreakdefault语句语句n+1true有有switch语句执行流程语句执行流程28【例【例2.72.7】将输入的百分制成绩按以下规】将输入的百分制成绩按以下规定转换成相应的等级:定转换成相应的等级:成成 绩绩 等级等级10090 优秀优秀 898

    15、0 良好良好 7970 中等中等 6960 及格及格 590 不及格不及格 29#include using namespace std;int main()float score;coutscore;if(score=0&score=100)switch(int(score)/10)case 10:case 9:coutscore分:优秀分:优秀endl;break;case 8:coutscore分:良好分:良好endl;break;case 7:coutscore分:中等分:中等endl;break;case 6:coutscore分:及格分:及格endl;break;default:c

    16、outscore“分:不及格分:不及格”endl;else cout输入数据有误输入数据有误!endl;return 0;共用同一个语句组 思考:若省去思考:若省去break语句,情况语句,情况会怎样?会怎样?302.3 循环结构循环结构v按照给定规则重复地执行程序中的语句按照给定规则重复地执行程序中的语句 2.3.1 while 语句语句while(表达式表达式)语句语句falsetrue表达表达式式语句语句图2.14 while语句流程图循环体循环体当型循环当型循环31【例例2.8】求求 1+2+3+100#include using namespace std;int main()int

    17、 i(1),sum(0);/定义变量,初始化定义变量,初始化while(i=100)/构造循环构造循环 sum+=i;/循环体,多次执行循环体,多次执行 i+;/循环变量循环变量coutsum=sumendl;return 0;0112真真33真真64真真105真真真真100真真101真真5050假假sum50500sum1i1233641005050101循环结束循环结束!实际上是将实际上是将i不停地累加到一起不停地累加到一起32【例例2.9】求出满足不等式的最小求出满足不等式的最小n值:值:5131211n#include using namespace std;int main()int

    18、 i=0;double s=0;while(s8)s+=double(1)/+i;/i-循环变量循环变量 coutn=iendl;return 0;8332.3.2 do-while语句语句do 语句语句while(表达式表达式);falsetrue表达表达式式语句语句图图2.15 do-while语句流程图语句流程图直到型循环直到型循环34【例【例2.10】求自然数求自然数1100之和,要求用之和,要求用do-while语句实现。语句实现。#include using namespace std;int main()int i(1),sum(0);do sum+=i;i+;/i-循环变量循环

    19、变量while(i=100);coutsum=sumendl;return 0;int i(1),sum(0);while(i2)cout”I like C+!”endl;/相当于一个空操作语句相当于一个空操作语句do cout”I like C+!”2);/输出一行文字信息输出一行文字信息注意:注意:dowhile首先执行循环体,然后再判断表达式,至首先执行循环体,然后再判断表达式,至少执行一次循环体。少执行一次循环体。当第一次循环表达式的值为真时,当第一次循环表达式的值为真时,while与与dowhile的结果完全一样,否则结果不相同。的结果完全一样,否则结果不相同。36【例【例2.11】

    20、输入一个自然数,将该数的每一位数】输入一个自然数,将该数的每一位数字按反序输出。例如:输入字按反序输出。例如:输入12345,输出,输出54321。#include using namespace std;void main()unsigned long int num,dgt;coutnum;cout”倒置结果为:倒置结果为:”;do dgt=num%10;cout0);coutendl;37for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3 3)表达式表达式2执行执行 非非0 00 0退出退出循环循环表达式表达式1表达式表达式3表达式表达式1;while(表达式表达式2

    21、);表达式表达式3;2.3.3 for 语句语句计数型循环计数型循环38【例【例2.12】求自然数】求自然数1100之和,要之和,要求用求用for语句实现。语句实现。#include using namespace std;int main()int i,sum(0);for(i=1;i=100;i+)sum+=i;coutsum=sumendl;return 0;39【例【例2.13自学自学】一个小球从一个小球从100米高处落米高处落下,每次落地后反弹回原高度的一半,再下,每次落地后反弹回原高度的一半,再落下。求它在第落下。求它在第10次落地时共经过多少米?次落地时共经过多少米?第第10次反

    22、弹多高?次反弹多高?v分析:分析:第第1次落地后反弹高度为次落地后反弹高度为h=100/2第第2次落地时经过的米数为次落地时经过的米数为s=100+h*2第第2次落地后反弹高度为次落地后反弹高度为h=h/2第第3次落地时经过的米数为次落地时经过的米数为s=s+h*240#include#include using namespace std;int main()float s=100.0,h=s/2;for(int i=2;i=10;i+)s=s+h*2;h=h/2;coutsetiosflags(ios:fixed)setprecision(3);cout第第10次落地时,共经过次落地时,共

    23、经过s米;米;反弹的高反弹的高度是度是h米米endl;return 0;思考思考 该小球反弹多少该小球反弹多少次才能静止下来?次才能静止下来?41注意:注意:for语句中的三个表达式可以部分省略或全部省略,但语句中的三个表达式可以部分省略或全部省略,但;不能省略,若省略表达式不能省略,若省略表达式2,则表示循环条件为真。,则表示循环条件为真。for(;i=100)break ;/break语句用于跳出循环语句用于跳出循环 int sum=0;for(int i=1;i100)break;三个表达式都可以是任何类型的三个表达式都可以是任何类型的C+表达式。表达式。int i,sum;for(i=

    24、1,sum=0;i=100;sum+=i,i+);表达式表达式1可以是变量定义语句,即循环控制变量可在其中定义。可以是变量定义语句,即循环控制变量可在其中定义。int sum=0;for(int i=1;i=100;i+)sum+=i;432.3.4 多重循环多重循环v循环嵌套:循环循环嵌套:循环体内体内包含另一个包含另一个完整的完整的循环结构循环结构。v三种循环语句皆三种循环语句皆可以相互嵌套可以相互嵌套。for()while()do while();44【例例2.14】编程显示输出九九乘法表 图2.19 九九乘法表运行界面45truefalsei=1i=9?truefalsej=1j=9?

    25、显示i*j表达式j+i+#include using namespace std;int main()coutttt九九 九九 乘乘 法法 表表endl;coutttt-endl;for(int i=1;i=9;i+)for(int j=1;j=9;j+)coutij=i*jt;coutendl;return 0;外层:外循环外层:外循环 内层:内循环内层:内循环46图2.21 下三角的九九乘法表图2.22 上三角的九九乘法表思考:思考:打印上三角或下三角程序如何改动?打印上三角或下三角程序如何改动?47注意:注意:(1)内循环控制变量与外循环控制变量不能同名。)内循环控制变量与外循环控制变量

    26、不能同名。(2)外循环必须完全包含内循环,不能交叉外循环必须完全包含内循环,不能交叉。(3)若循环体内有若循环体内有if语句,或语句,或if语句内有循环语句,语句内有循环语句,也不能交叉。也不能交叉。(4)利用)利用goto语句可以从循环体内转向循环体外,语句可以从循环体内转向循环体外,但绝对不允许从循环体外转入循环体内。但绝对不允许从循环体外转入循环体内。(5)当嵌套使用各种循环语句时,特别需要严格按)当嵌套使用各种循环语句时,特别需要严格按照缩进规则来书写程序。有时还应适当配以注释,以照缩进规则来书写程序。有时还应适当配以注释,以保持清晰易辩的结构特征。保持清晰易辩的结构特征。482.4

    27、控制转向语句控制转向语句2.4.1 break语句语句仅可用于以下两种情况:仅可用于以下两种情况:(1)用于)用于switch语句中,保证多分支情况的正确语句中,保证多分支情况的正确运行运行(2)用于循环语句中,以便在某一适当时刻及位)用于循环语句中,以便在某一适当时刻及位置终止执行循环体中的语句,并使流程控制退出该置终止执行循环体中的语句,并使流程控制退出该循环控制结构,转去执行该循环语句的下一条语句。循环控制结构,转去执行该循环语句的下一条语句。49【例【例 2.15】break语句应用示例。已知圆的半径为不大于语句应用示例。已知圆的半径为不大于10的正的正整数,要求输出所有不大于整数,要

    28、求输出所有不大于100的圆面积值。的圆面积值。#include using namespace std;const float PI=3.14159;int main()int r;float area;cout半径不大于半径不大于10且面积不大于且面积不大于100的圆,其面积如下:的圆,其面积如下:endl;for(r=1;r100)break;/如果面积大于如果面积大于100,则跳出循环,则跳出循环 cout圆半径圆半径=r,面积,面积=areaendl;return 0;502.4.2 continue 语句语句v格式:格式:continue;v功能:只用在循环体中,用来功能:只用在循环

    29、体中,用来提前结束该次提前结束该次循环而进入下一轮循环循环而进入下一轮循环。在循环体中遇到在循环体中遇到continue语句时,本次循环语句时,本次循环结束,回到循环条件判断是否执行下一次循结束,回到循环条件判断是否执行下一次循环。环。51v在在while和和do-while循环结构中,循环结构中,continue语句将使执行流程直接跳转到循环条件的判语句将使执行流程直接跳转到循环条件的判定部分,然后决定循环是否继续进行。定部分,然后决定循环是否继续进行。v在在for循环结构中,当遇到循环结构中,当遇到continue时,执时,执行流程将跳过循环体中余下的语句,而转去行流程将跳过循环体中余下的

    30、语句,而转去执行执行for语句中的表达式语句中的表达式3,然后根据表达式,然后根据表达式2进行循环条件的判定以决定是否继续执行进行循环条件的判定以决定是否继续执行for循环体。循环体。52while(i=100)break;coutsumendl;while(i=100)continue;break和和continue语句的区别语句的区别53例例2.16】continue语句应用示例。请写出下列程序的运语句应用示例。请写出下列程序的运行结果。行结果。#include using namespace std;int main()int i,s;for(i=1,s=0;i=10;+i)if(i%2

    31、=0)continue;if(i%10=7)break;s+=i;couts=s;return 0;s=9该程序的功能:求出该程序的功能:求出110所有奇数的和且当遇到所有奇数的和且当遇到某数除以某数除以10的余数为的余数为7时提前结束求和。时提前结束求和。542.4.3 goto语句语句goto 标号标号;标号标号:语句语句;标号语句标号语句将流程转到标号所将流程转到标号所指定的标号语句处。指定的标号语句处。55【例例2.17】利用利用goto语句实现求一个自然数的阶乘并输出结果。语句实现求一个自然数的阶乘并输出结果。#include using namespace std;int main

    32、()int i=1,m,s=1;coutm;loop:s*=i;+i;if(i=m)goto loop;couts=sendl;return 0;56说明:说明:(1)如果不加限制地使用)如果不加限制地使用goto语句转来转去,则会破坏程序自语句转来转去,则会破坏程序自上而下的执行顺序而降低程序的可读性,不符合结构化程序设计上而下的执行顺序而降低程序的可读性,不符合结构化程序设计的思想。因此应尽量避免使用的思想。因此应尽量避免使用goto语句;语句;(2)特殊场合使用)特殊场合使用goto将简化程序表达。将简化程序表达。int i,j,k;for(i=1;i10;+i)for(j=1;j10;

    33、+j)for(k=1;k10;+k)if(i*j*k=125)goto End;End:couti*j*kn(2)m除以除以n得余数得余数r(3)若若r=0,则,则n为最大公约数,结束;否则执行为最大公约数,结束;否则执行(4)(4)mn,n r,再重复执行,再重复执行(2)m n r12 5 2 5 2 1 2 1 0 辗转相除法辗转相除法while(r=m%n)!=0)m=n;n=r;coutn;58#include using namespace std;int main()int m,n,r,t;coutmn;t=m*n;if(mn)r=m;m=n;n=r;while(r=m%n)!=

    34、0)m=n;n=r;cout最大公约数:最大公约数:nendl;cout最小公倍数:最小公倍数:t/nendl;/=原两数乘积原两数乘积/最大公约数最大公约数 return 0;59【例【例2.19】顺序输出】顺序输出3100之间的所有素数,并计算输出素数之间的所有素数,并计算输出素数之和。之和。分析:分析:(1 1)素数:一个大于)素数:一个大于1 1的除了它自身和的除了它自身和1 1以外,不能被其它任何正整数所整除以外,不能被其它任何正整数所整除的整数。判别某数的整数。判别某数m m是否为素数,最简单的方法是:用是否为素数,最简单的方法是:用i=2i=2,3 3,m-1m-1逐个除,逐个除

    35、,只要有一个能整除,m就不是素数,可以用break提前结束循环;若都不能整除,则m是素数。(2 2)如果m不是素数,则必然能被分解为两个因子a和b,并且其中之一必然小于等于 sqrt(m),另一个必然大于等于sqrt(m)。所以要判断m是否为素数,可简化为判断它能否被能否被2 2至至sqrt(m)sqrt(m)之间的数整除之间的数整除即可。因为若m不能被2至sqrt(m)之间的数整除,则必然也不能被sqrt(m)至m-1之间的数整除。(3 3)在退出循环以后,如果是因为找到了一个能整除m的数而通过break退出循环的,则i=sqrt(m);反之,如果是正常退出循环的,则i=sqrt(m)+1。

    36、因此,在循环结束后,只要判断判断i i是否大于是否大于sqrt(m)sqrt(m),若是,则表明m是素数,输出该素数。(4 4)要判断多个素数是否为素数,需要使用双重循环。外循环每循环一次提供一个数,由内循环通过多次除法判断其是否为素数。60#include#include using namespace std;int main()cout3100之间的素数是:之间的素数是:endl;int m,i,s=0;for(m=3;m100;m+=2)int k=int(sqrt(m);for(i=2;ik)coutmt;s+=m;cout”n3100之间的素数之和之间的素数之和=”s;couten

    37、dl;return 0;61【例【例 2.20 2.20】输入输入x x,计算,计算sin(x)sin(x)。计算公式为:。计算公式为:当第当第n n项的绝对值小于项的绝对值小于1010-6-6时结束。时结束。分析:关键是找部分级数和的分析:关键是找部分级数和的通项通项:),(,ntnnxtnn7531)2)(1(2262int n=1;double x,t,sinx(0);/变量变量t保存每一项的值;给保存每一项的值;给sinx变量赋初值变量赋初值0coutx;t=x;/将求和式的第一项值将求和式的第一项值x赋给赋给twhile(fabs(t)=1E-6)sinx+=t;t=-t*x*x/(

    38、n+1)*(n+2);n+=2;cout编程求得的编程求得的sin(x)=sinxendl;cout调用标准函数求得的调用标准函数求得的sin(x)=sin(x)endl;63【例【例 2.21 2.21】求求“水仙花数水仙花数”。所谓。所谓“水仙花数水仙花数”是指一个是指一个三位正整数,其各位数字的立方和等于该数本身。三位正整数,其各位数字的立方和等于该数本身。例如:例如:153=1153=13 3+5+53 3+3+33 3。方法方法1 1:v利用三重循环编写程利用三重循环编写程序序v因为因为“水仙花数水仙花数”是三是三位整数,所以取值范位整数,所以取值范围为围为100999100999。

    39、v外循环变量外循环变量i i控制百控制百位数字从位数字从1 1变化到变化到9 9v中层循环变量中层循环变量j j控制控制十位数字从十位数字从0 0变化到变化到9 9v内循环变量内循环变量k k控制个控制个位数字从位数字从0 0变化到变化到9 9。int i,j,k,n;cout水仙花数:水仙花数:;for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)m=i*i*i+j*j*j+k*k*k;n=100*i+10*j+k;if(m=n)coutm;64方法方法2 2:不使用循环嵌套,只用1个for语句编写程序。int main()int i,j,k,n;cou

    40、t水仙花数:;for(n=100;n1000;n+)i=n/100;/i为百位数字为百位数字 j=n/10-i*10;/j为十位数字为十位数字 k=n%10;/k为个位数字为个位数字 if(i*i*i+j*j*j+k*k*k=n)coutn;65【例【例 2.22 2.22自学自学】用用“枚举法枚举法”求解百元买百鸡问题。假定公鸡求解百元买百鸡问题。假定公鸡5 5元元1 1只,母鸡只,母鸡3 3元元1 1只,小鸡只,小鸡1 1元元3 3只,现在有只,现在有100100元钱要买元钱要买100100只鸡,且需只鸡,且需包含公鸡、母鸡和小鸡,编程列出所有可能的购鸡方案。包含公鸡、母鸡和小鸡,编程列出

    41、所有可能的购鸡方案。分析分析v 设公鸡、母鸡、小鸡各为设公鸡、母鸡、小鸡各为x、y、z只,可列出方程:只,可列出方程:1003/35100zyxzyx 采用试凑法采用试凑法(也称为穷举法或枚举法也称为穷举法或枚举法)来实现,即将可能出现来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。来实现。66#include using namespace std;int main()int x,y,z;cout公鸡数公鸡数t母鸡数母鸡数t小鸡数小鸡数tendl;for(x=1;x=19;x+)/公鸡最多买公鸡最多买(100-3-1/3)/5只只for(y=1;y=31;y+)/母鸡最多买母鸡最多买(100-5-1/3)/3只只 z=100-x-y;if(5*x+3*y+z/3.0=100)coutxtytzendl;return 0;实验2:选择、循环程序设计v题目(作业):P63-2,3,7v要求:(1)实验前编号程序,上机调试、改进、运行。(2)只提交.CPP程序,共提交3个源程序,其它文件不得提交 (3)为便于作业管理,文件命名规定如下:.CPP班次班次学号学号题号题号07120103.cpp7班班12号第号第1章章03题题章次章次

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第2章程序控制结构NEW课件.ppt
    链接地址:https://www.163wenku.com/p-3860839.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库