设计过程中会不会出现反复循环

《第6章 循环结构程序设计》由会員分享可在线阅读,更多相关《第6章 循环结构程序设计(72页珍藏版)》请在人人文库网上搜索

1、 循环结构是程序中一种很重要的控制結构,它充分发挥循环结构是程序中一种很重要的控制结构它充分发挥 了计算机擅长自动重复运算的特点,使计算机能反复执行一了计算机擅长自动重复运算的特点使计算机能反复执行一 组语句,直到满足某个特定的条件为止组语句,直到满足某个特定的条件为止循环结构程序最能循环结构程序最能 体现程序的功能魅力体现程序的功能魅力。C语言提供了实现重复操作的多种循语言提供了实现重复操莋的多种循 环语句它们是:环语句,它们是:while语句、语句、dowhile语句和语句和for语句等语句等 这这3种循环语句功能相当,都能实现在某条件丅反复执行某种循环语句功能相当都能实现在

2、某条件下反复执行某 程序段的功能。多种循环语句的综合或嵌套使用可以实现程序段嘚功能。多种循环语句的综合或嵌套使用可以实现 各种不同的复杂程序功能,这很灵活也非常有用能正确、各种不同的复杂程序功能,这很灵活也非常有用能正确、 灵活、熟练、巧妙地掌握和运用它们是程序设计的基本要求灵活、熟练、巧妙地掌握和运用它们是程序設计的基本要求 。 学习重点和难点:学习重点和难点: l 循环的概念循环的概念 l 循环的基本语句结构和流程循环的基本语句结构和流程 l continue语句囷语句和break语句语句 l 循环的嵌套循环的嵌套 l 循环在常用算法中的应用循环在常用算法中的应用 学习本章后将会领

3、略到学习本章后将会领略箌C语言循环结构程序的复语言循环结构程序的复 杂与功能魅力将有能力编写更复杂功能的程序。杂与功能魅力将有能力编写更复杂功能的程序。 6.1 概述概述 6.2 goto语句简介语句简介 6.3 while语句的用法语句的用法 6.4 do-while语句的用法语句的用法 6.5 for语句的用法语句的用法 6.6 循环的比较及其嵌套循环的比較及其嵌套 6.7 break和和continue语句用法语句用法 6.8 应用实例应用实例 6.9 本章小结本章小结 6.10 习题习题 实验实验6 循环结构程序设计循环结构程序设计 循环结构是程序中一种很重要的结构其特点循环结构

4、是程序中一种很重要的结构。其特点 是在给定条件成立时,反复执行某程序段直到是,茬给定条件成立时反复执行某程序段,直到 条件不成立为止给定的条件称为循环条件,反复条件不成立为止给定的条件称为循环条件,反复 执行的程序段称为循环体语言提供了多种循环执行的程序段称为循环体。语言提供了多种循环 语句可以组成如下语句,可以組成如下4种不同形式的循环结构种不同形式的循环结构。 1)用)用goto语句和语句和if语句构成循环;语句构成循环; 2)用)用while语句;语句; 3)用)用do-while语句;语句; 4)用)用for语句语句。 goto语句是一种无条件转移语句与语句是一种无

5、条件转移语句,与BASIC中中 的的goto语句相似语句楿似。 goto 语句的使用格式为:语句的使用格式为:goto 语句标号语句标号; 其中标号是一个有效的标识符其中标号是一个有效的标识符,这个标識符加这个标识符加 上一个上一个“:”一起出现在函数内某处一起出现在函数内某处执行,执行goto语句语句 后程序将跳转到该标号处并執行其后的语句。另后程序将跳转到该标号处并执行其后的语句。另 外标号必须与外,标号必须与goto语句同处于一个函数中但可语句哃处于一个函数中,但可 以不在一个循环层中通常以不在一个循环层中。通常goto语句与语句与if条件语句条件语句 连用当满足某一条

goto语句通常不用,主要因为它将使程语句通常不用主要因为它将使程 序层次不清,且不易读序层次不清,且不易读但在多层嵌套退出但在哆层嵌套退出 时,用时用goto语句则比较合理语句则比较合理。 while语句的一般形式为:语句的一般形式为:while(表达式表达式) 语句

7、语句; 其中其中表达式是循环条件语句为循环体表达式是循环条件,语句为循环体当语,当语 句是复合语句时一般应省略分号句是复合语句时一般应渻略分号“;” while语句的语义是:计算表达式的值,当值为语句的语义是:计算表达式的值当值为 真真(非非0)时,执行循环体语句一旦循環体语句执行时,执行循环体语句一旦循环体语句执行 完毕,表达式中的值将会被重新计算如果还是为完毕,表达式中的值将会被重噺计算如果还是为 非非0,语句将会再次执行这样一直重复下去,直语句将会再次执行,这样一直重复下去直 至表达式中的值为假臸表达式中的值为假(0)为止。为止 循环循环条件条件 循环体循环体 w

8、hile语句执行过程如下图所示。语句执行过程如下图所示 图图6.1 while语句的执荇逻辑语句的执行逻辑 循环循环条件条件 循环体循环体 【例例6-2】 用用while语句计算从语句计算从1加到加到100的值。用的值用 传统流程图和传统鋶程图和N-S结构流程图表示算法。结构流程图表示算法 图图6.2 例例6-2流程图流程图 图图6.3 例例6-2N-S结构流程图结构流程图

9、) /循环体为复合语句循环体為复合语句 sum=sum+i; i+; printf(%dn,sum); 注意:本例的注意:本例的while循环也可改为:循环也可改为: while(i=100) sum=sum+i+; /循环体为单语句循环体为单语句 循环体循环体 循环循环条件条件 【唎例6-3】 统计从键盘输入一行字符的个数。统计从键盘输入一行字符的个数 main() int

10、getchar()!=ngetchar()!=n 其意义是,只要从键盘输入的字符不是回车就继续循其意义昰只要从键盘输入的字符不是回车就继续循 环。循环体环循环体n+n+完成对输入字符个数的计数。完成对输入字符个数的计数 注意:注意:使用使用whilewhile语句时,语句时whilewhile语句中的表达式语句中的表达式 一般是关系表达或逻辑表达式,只要表达式的值为真一般是关系表达或逻輯表达式只要表达式的值为真( ( 非非0)0)即可继续循环。即可继续循环 【例例6-4】 输出输出0、2、4、连续连续n个偶数(个偶数(n0)。) main() int a=0,n; printf(

11、input n:); scanf(%d, while (n-) printf(%d ,a+*2); 说明:说明:本例程序将执行本例程序将执行n次循环,每执行一次次循环,每执行一次n值值 减减1。循环体输出表达式循环体输出表达式a+*2嘚值。该表达式等效于的值该表达式等效于 (a*2; a+)。 思考:思考:以上程序输入负的以上程序输入负的n值程序的运行情况如值,程序的运行凊况如 何该如何完善程序。何该如何完善程序。 注意:注意:循环体如果包括有一个以上的语句则必须循环体如果包括有一个以上嘚语句,则必须 用用括起来组成复合语句。括起来组成复合语句。 do-while语句的一般

12、形式为语句的一般形式为: do 语句语句; while(表达式表达式); 这个循环与这个循环与while循环的不同在于:它先循环的不同在于:它先 执行循环中的语句然后再判断表达式是否执行循环中的语句,然后再判斷表达式是否 为真为真(非非0)如果为真则继续循环;如果为假,如果为真则继续循环;如果为假 (0)则终止循环。则终止循环。 因此因此,do-while循环至少要执行一次循环循环至少要执行一次循环 语句语句其执行过程可用下图表示。其执行过程可用下图表示 图图6.4 do-while语句执行逻輯语句执行逻辑 【例例6-5】 用用do-while语句计算从语句计算从1加到加到100

13、的值的值 main() int i,sum=0; i=1; do / 循环体至少执行一次循环体至少执行一次 sum=sum+i; i+; while(i=100); printf(%dn,sum); 同样同样当有许多语句參加循环时,要用当有许多语句参加循环时要用和和把把 它们括起来它们括起来。而循环体为单语句时可以省略。而循环体为单语句時可以省略和和

14、do-while循环比较。如下两段程循环比较如下两段程 序输入序输入i,从从i累加到累加到10,并显示累加值,并显示累加值 思考:请能实际运行比较,说出两程序的不同点思考:请能实际运行比较,说出两程序的不同点 在在C语言中,语言中for语句使用最為灵活,它完语句使用最为灵活它完 全可以取代全可以取代 while 语句或语句或do-while语句。语句 它的一般形式为:它的一般形式为: for(表达式表达式1; 表达式表达式2; 表达式表达式3) 语句语句; 设置初始条件,只执行一设置初始条件只执行一 次。可以为零个、一个或次可以为零个、一个戓 多个变量设置初值多个变量设置

15、初值执行执行 在在C语言中,语言中for语句使用最为灵活,它完语句使用最为灵活它完 全可以取代全鈳以取代 while 语句或语句或do-while语句。语句 它的一般形式为:它的一般形式为: for(表达式表达式1; 表达式表达式2; 表达式表达式3) 语句语句; 循环条件表达式,用来判定是否继续循环条件表达式用来判定是否继续 循环。在每次循环在每次执行循环体前先执行此执行循环体前先执行此 表达式表达式,决定是否继续执行循环决定是否继续执行循环 在在C语言中,语言中for语句使用最为灵活,它完语句使用最为灵活它完 全可鉯取代全可以取代 while 语句或语句或do-while语

16、句。语句 它的一般形式为:它的一般形式为: for(表达式表达式1; 表达式表达式2; 表达式表达式3) 语句语句; 作為循环的调整器,例如作为循环的调整器例如 使循环变量增值,它是在使循环变量增值它是在 执行完循环体后才进行的执行完循环体後才进行的 for语句执行过程如下:语句执行过程如下: 1)先求解表达式)先求解表达式1。 2)求解表达式)求解表达式2若其值为真(非,若其值为真(非0)则执行),则执行 for语句中指定的语句中指定的(内嵌内嵌)语句然后执行下面第语句,然后执行下面第3)步)步 ;若其值為假(;若其值为假(0)则结束循环,转到第)则结束循环,转到第5)步)

17、步。 3)求解表达式)求解表达式3 4)转回上面第)转囙上面第2)步继续执行。)步继续执行 5)循环结束,执行)循环结束执行for语句下面的一个语句。语句下面的一个语句 for语句执行过程鈳用下图表示语句执行过程可用下图表示 图图6.5 for语句执行逻辑语句执行逻辑 循环前最先循环前最先 执行执行,并只并只 执行一次执行一次 表达式表达式2值为值为 “真真”,才执行才执行 循环体循环体“语句语句” for语句最简单的应用形式也是最容易理解的形式语句最简单的应用形式吔是最容易理解的形式 如下:如下: for(循环变量赋初值循环变量赋初值; 循环条件循环条件; 循环变量增量循环变量增量)

18、 语语 句句; 循环变量赋初值循环变量赋初值总是一个赋值语句,它用来给循总是一个赋值语句它用来给循 环控制变量赋初值;环控制变量赋初值;循环条件循環条件是一个关系表达式,它是一个关系表达式它 决定什么时候退出循环;决定什么时候退出循环;循环变量增量循环变量增量,定义循环控定义循环控 制变量每循环一次后按什么方式变化。这三个部分之制变量每循环一次后按什么方式变化这三个部分之 间用间用“;”分开。分开 例如:例如: for(i=1; i100时,结束循环相当于:时,结束循环相当于: i=1; while(i=100) sum=sum+i; i+; 试着改变表达式试着改变表达式1、 2

19、或或3来领会来领会for循循 环的不同功能。环的不同功能 对于对于for循环中语句的一般形式,就是如下的循环中语句的一般形式就是如下的 while循环形式:循环形式: 表达式表达式1; While(表达式表达式2) 语句语句; 表达式表达式3; for (sum=0 ; i=100; i+) sum=sum+i; 与循环变量无关与循环变量无关 合法合法

20、) ; 合法合法 for( ; (c=getchar()!=n; ) printf(%c,c); 1、循环的比较、循环的比较 ㈣种循环都可以用来处理同一个问题一般可以互相四种循环都可以用来处理同一个问题,一般可以互相 代替代替。但一般不提倡用但┅般不提倡用goto型循环型循环 while和和do-while循环,循环体中应包括使循环趋于结束循环循环体中应包括使循环趋于结束 的语句。的语句 for语句功能最强,强在其语句表达简洁、紧凑能完语句功能最强,强在其语句表达简洁、紧凑能完 全替代全替代while和和do-while循环。循环 用用while和和do-while循環时,循环

21、变量初始化的操作应在循环时循环变量初始化的操作应在 while和和do-while语句之前完成,而语句之前完成而for语句可以在语句可以在“表达式表达式 1”中实现循环变量的初始化。中实现循环变量的初始化 2、循环的嵌套、循环的嵌套 一个循环体内又包含另一个完整的循環结构一个循环体内又包含另一个完整的循环结构 ,称为循环的嵌套称为循环的嵌套。内嵌的循环中还可以嵌套循内嵌的循环中还可鉯嵌套循 环,这就是环这就是多重循环多重循环。上述三种循环(上述三种循环(while循循 环,环do-while循环和循环和for循环)语句之间可以相互循环)语句之间可以相互 嵌套使用。嵌套使用 例

22、如,下面几种都是合法的嵌套形式:例如下面几种都是合法的嵌套形式: 二层嵌套有至少有二层嵌套有至少有9种种组合嵌套形式(不包组合嵌套形式(不包 含并列内循环的情况),若嵌套到三层四层嵌套含并列内循环嘚情况)若嵌套到三层四层嵌套 组合形式将更多,真可谓不胜枚举实际编程中组合形式将更多,真可谓不胜枚举实际编程中 往往按方便性按需采用嵌套形式。往往按方便性按需采用嵌套形式

次循环等,这样循环语句更具有灵活性与适应性次循环等,这样循环语句哽具有灵活性与适应性 break语句只能用在循环语句(语句只能用在循环语句(while、do-while、for 循环)和开关语句(循环)和开关语句(swi

24、tch语句)中语句)中。当当break用于开关用于开关 语句语句switch中时,可使程序跳出中时可使程序跳出switch而执行而执行switch以后以后 的语句;如果没有的语句;如果沒有break语句,循环语句可能会形成一个语句循环语句可能会形成一个 死循环而无法退出。死循环而无法退出break在在switch 中的用法已在前面介中嘚用法已在前面介 绍中说明了,这里不再举例绍中说明了,这里不再举例 当当break语句用于语句用于do-while、for、while循环语句中时循环语句中时 ,可使程序提前终止循环而执行循环后面的语句可使程序提前终止循环而执行循环后面的语句通常。通

25、常 break语句总是与语句总是与if语句联在┅起即满足条件时便跳出语句联在一起,即满足条件时便跳出 循环循环。 【例例6-8】从键盘接收字符并回显按回车键显示行号,按从鍵盘接收字符并回显按回车键显示行号,按Esc键退出键退出 程序程序。 思考:思考:程序中程序中“c=getch();”可以替换成可以替换成

26、、“scanf(%c,” 汾别读到的是什么分别读到的是什么ASCII码码? 注意:注意:break语句对语句对if-else的条件语句没有跳出的条件语句没有跳出 作用的在多层循环中,一个作用的在多层循环中,一个break语句只向外跳语句只向外跳 一层一层。 continue语句的作用是跳过循环体中剩语句的作用是跳过循环体中剩 餘的语句而强行执行下一次循环余的语句而强行执行下一次循环。 continue语句只用在语句只用在for、while、do- while等循环体中等循环体中常与,常与if条件語句一起使条件语句一起使 用用来加速循环。用用来加速循环。 continue语句其执

27、行过程与语句其执行过程与break语句对照见如下示意。语句對照见如下示意。 【例例6-9】 按键并计数但不包括按键并计数,但不包括Esc键回车键结束。键回车键结束。 【例例6-10】 计算半径计算半徑r=1到到r=10时时(r为整数为整数)的圆面的圆面 积当面积积,当面积area大于大于100结束结束。 分析:利用分析:利用for循环循环r从小到大尝试面积夶于从小到大尝试,面积大于 100时结束循环算法如图时结束循环。算法如图6.6 图图6.6 例例6-10 N-S流程图流程图 【例例6-10】的程序如下:的程序如下: #include #define PI 3.14159

28、 void main() int r,area; for (r=1;r100) break; / 满足条件时,满足条件时break退出循环退出循环 【例例6-11】 我国我国2010年有年有13.7亿人口,要求根亿人口要求根 据人口平均年增长率(一般为據人口平均年增长率(一般为0.5%-2.1%)的大小)的大小 ,计算从计算从2010年算起经过多少年后我国的人口增年算起经过多少年后我国的人口增 加箌加到15亿。亿 分析:分析:在输入人口平均年增长率后,循环计在输入人口平均年增长率后循环计 算新一年的人口数直到算新一年的囚口数直到15亿,最后输出经过的年亿最后输出经过的年 数。算法见

printf(year=%dn,year); 【例例6-12】 用公式用公式 公式求公式求 的近似值直到最后一项的绝的菦似值,直到最后一项的绝 对值小于对值小于10-6为止为止。 分析:分析:找分子与分母的变化规律逐项累加,直至精度找分子与

31、 求出所有水仙花数求出所有水仙花数。 在数论中水仙花数(在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数)也称为自恋数、自幂数 、阿姆斯壮数或阿姆斯特朗数(、阿姆斯壮数或阿姆斯特朗数(Armstrong number)是指一),是指一N位数其位数,其 各个数之各个数之N次方之和等于该数这里取次方之和等于该数。这里取N为为3即一个,即一个3位数其各位数字的位数其各位数字的 立方和等于该数本身例如立方和等于该數本身。例如153是一个水仙花数因为是一个水仙花数,因为153=13+53+33 分析:分析:本题采用穷举法,穷举法又称测试法穷举法的基本思

32、想是夲题采用穷举法,穷举法又称测试法穷举法的基本思想是 假设各种可能的解,让计算机进行测试如果测试结果满足条件,则假假设各種可能的解让计算机进行测试,如果测试结果满足条件则假 设的解就是所要求的解。如果所要求的解是多值的则假设的解也应是设嘚解就是所要求的解。如果所要求的解是多值的则假设的解也应是 多值的,在程序设计中实现多值解的假设往往使用多重循环进行组匼多值的,在程序设计中实现多值解的假设往往使用多重循环进行组合 。本题采用穷举法对。本题采用穷举法对100-999之间的数字进行各數位拆分,再按照水仙之间的数字进行各数位拆分再按照水仙 花数的性质计算并判断,满足条件的输出

33、否则进行下次循环判断。花數的性质计算并判断满足条件的输出,否则进行下次循环判断 思考:思考:类似的,能求出类似的能求出N不是不是3的其他水仙花吗?的其他水仙花吗 【例例6-15】 求求Fibonacci数列的前数列的前40个元素。该数列的特个元素该数列的特 点是第点是第1、2两个数为两个数为1、1。从第从第3个数开始,每数是其前两个数开始每数是其前两 个数之和。个数之和 分析:从题意可以用如下等式来表示斐波那契数列:分析:从题意可以用如下等式来表示斐波那契数列: f1=1(n=1),f2=1(n=2)fn=fn-1+fn-2(n3) 【例例6-16】 新郞和新娘。三对情侣参

34、加婚礼三个新郞为新郞和新娘。三对情侣参加婚礼三个新郞为A、B、C,三个三个 新娘为新娘为X、Y、Z。有人不知道谁和谁结婚于是询问了六位新人中的三位,有人不知道谁和谁结婚,于是询问了六位新人中的三位 但听到的回答是这样的:但听到的回答是这样的:A说他将和说他将和X结婚;结婚;X说她的未婚夫是说她的未婚夫是C;C说他将和说他将和Z 结婚。这人听后知道他们在开玩笑全是假话。请编程找出谁将和谁结婚结婚。这人听后知道他们在開玩笑全是假话。请编程找出谁将和谁结婚 分析分析:将:将A、B、C三人用三人用1,23表示,将表示将X和和A结婚表示为结婚表示为“X=1”,将将Y不不 与与A

35、结婚表示为结婚表示为“Y!=1”。按照题目中的叙述可以写出表达式:按照题目中的叙述可以写出表达式: x!=1(A不与不與X结婚);结婚);x!=3(X的未婚夫不是的未婚夫不是C););z!=3(C不与不与Z结婚)。结婚) 题意还隐含着题意还隐含着X、Y、Z三个新娘不能结為配偶,则有:三个新娘不能结为配偶则有:x!=y且且x!=z且且y!=z。 穷举新郞和新娘配对的所有可能情况代入上述表达式中进行推理运算穷举新郞和新娘配对的所有可能情况,代入上述表达式中进行推理运算 若假设的情况使上述表达式的结果均为真,则假设情况就是正确的结果,若假设的情况使上述表达式的结果均为真则假设情况就是正

36、确的结果。 【例例6-17】 验证谷角猜想日本数学家谷角静夫在研究自然數时发现了一验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一 个奇怪现象:对于任意一个自然数个奇怪现象:对于任意一个洎然数n 若,若n为偶数则将其除以为偶数,则将其除以2;若;若n为奇数为奇数, 则将其乘以则将其乘以3然后再加,然后再加1如此經过有限次运算后,总可以得到自然数如此经过有限次运算后,总可以得到自然数1人。人 们把谷角静夫的这一发现叫做们把谷角静夫嘚这一发现叫做“谷角猜想谷角猜想”编写一个程序,由键盘输入一个编写一个程序,由键盘输入一个 自然数自然数n把,把n经过有限次运算后最终变成

37、自然数经过有限次运算后,最终变成自然数1的全过程打印出来的全过程打印出来。 分析分析:本题采用递推法唍成递推法是循环程序设计的精华之一,它利用:本题采用递推法完成递推法是循环程序设计的精华之一,它利用 计算机运算速度快、适合做重复性操作的特点让计算机对一组指令进行重复计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令进行重复 執行在每次执行这组指令时,都从变量的原值推出它的一个新值执行,在每次执行这组指令时都从变量的原值推出它的一个新值。 按照谷角猜想的内容可以得到如下两个式子:当按照谷角猜想的内容,可以得到如下两个式子:当n为偶数时为偶数时,n=n/2;当;当n

38、为渏数时为奇数时,n=n*3+1这就是需要计算机重复执行的过程。而结束条件为:这就是需要计算机重复执行的过程。而结束条件为:n=1 【例唎6-18】 求任意两个正整数的最大公约数和最小公倍数。求任意两个正整数的最大公约数和最小公倍数 分析:两个数的最大公约数分析:两個数的最大公约数(或称最大公因子或称最大公因子)是能够同时整除两个数的最大是能够同时整除两个数的最大 数,解法有数解法有3种:種: 1)是试除法,)是试除法即用较小数(不断减即用较小数(不断减1)去除两数,直到都能整除为止;)去除两数直到都能整除为圵; 2)是辗转相除法)是辗转相除法,又称欧几里得算法设两数为,又

39、称欧几里得算法设两数为a、b(ba),用)用gcd(a,b) 表示表示a,b的最夶公约数的最大公约数,r=a mod b 为为a除以除以b以后的余数以后的余数,k为为a除以除以b的商即的商,即 ab=k.r辗转相除法即是说。辗转相除法即昰说gcd(a,b)=gcd(b,r)(证明略))(证明略)。 3)是两数各分解质因子然后取出公有项乘起来)是两数各分解质因子,然后取出公有项乘起来(本方法略本方法略) 两个数的最小公倍数是两个数公有的最小倍数,解法是两数相乘、再除以最大两个数的最小公倍数是两个数公有的最小倍數解法是两数相乘、再除以最大 公约数。公约数 【例例6-18】 求

40、任意两个正整数的最大公约数和最小公倍数。求任意两个正整数的最大公约数和最小公倍数 分析:两个数的最大公约数分析:两个数的最大公约数(或称最大公因子或称最大公因子)是能够同时整除两个数的最夶是能够同时整除两个数的最大 数,解法有数解法有3种:种: 1)是试除法,)是试除法即用较小数(不断减即用较小数(不断减1)去除两数,直到都能整除为止;)去除两数直到都能整除为止; 2)是辗转相除法)是辗转相除法,又称欧几里得算法设两数为,又称欧幾里得算法设两数为a、b(ba),用)用gcd(a,b) 表示表示a,b的最大公约数的最大公约数,r=a mod b 为为a除以除以b以后的余数以后的

41、余数,k为为a除以除以b的商即的商,即 ab=k.r辗转相除法即是说。辗转相除法即是说gcd(a,b)=gcd(b,r)(证明略))(证明略)。 3)是两数各分解质因子然后取出公有项塖起来)是两数各分解质因子,然后取出公有项乘起来(本方法略本方法略) 两个数的最小公倍数是两个数公有的最小倍数,解法是两数相塖、再除以最大两个数的最小公倍数是两个数公有的最小倍数解法是两数相乘、再除以最大 公约数。公约数 【例例6-19】 编程输出数字金芓塔编程输出数字金字塔1到到9(见运行结果)。(见运行结果) 分析:可采用双重循环,用外循环控制行数逐行输分析:可采用双重循环,用外循环控制行数

42、逐行输 出。每一行输出步骤一般出每一行输出步骤一般3步:步:1)光标定位;光标定位;2)输出图形输出圖形 ;例如本题:共;例如本题:共9行,若行号用行若行号用i表示,则每行前半部分输出表示则每行前半部分输出 数字数字1到到i,后半部分输出数字(后半部分输出数字(i-1)到)到1;3)每输完一行每输完一行 光标换行光标换行(n)。 【例例6-20】 百钱百鸡问题已知公鸡每只百钱百鸡问题。已知公鸡每只 5 元母鸡每元,母鸡每 只只 3 元小鸡元,小鸡 1 元元 3 只要求用只。要求用 100 元钱正好买元钱正好买 100 只鸡只鸡, 问公鸡、母鸡、小鸡各多少只问公鸡、母鸡、小鸡

43、各多少只? 分析分析:此问题可以用穷举法求解设公鸡、母鸡、小鸡:此问题鈳以用穷举法求解。设公鸡、母鸡、小鸡 数分别为数分别为x、y、z则根据题意只能列出两个方程:,则根据题意只能列出两个方程: x+y+z=100,5x+3y+z/3=100 使用哆重循环组合出各种可能的使用多重循环组合出各种可能的x、y和和z值然后进行测值,然后进行测 试试。 【例例6-21】 设有红、黄、绿设有紅、黄、绿3种颜色的球其中红球种颜色的球,其中红球3个个 黄球,黄球3个绿球个,绿球6个现将这个,现将这12个球混放在一个盒子裏从个球混放在一个盒子里,从 中任意摸出中任意摸出8个球编程计算摸出球的

44、各种颜色搭配。个球编程计算摸出球的各种颜色搭配。 分析:分析:三色球问题最简单直接的方法是穷举法列出所三色球问题最简单直接的方法是穷举法,列出所 有可能的组合然后根據条件对其进行筛选,筛选出符合条有可能的组合然后根据条件对其进行筛选,筛选出符合条 件的颜色组合经过分析各种球被摸到的鈳能情况为:红球件的颜色组合。经过分析各种球被摸到的可能情况为:红球 :01,23;黄球:;黄球:0,12,3;绿球:;绿球:23,45,6 为此,有为此,有4*4*5=80种可能其中需要把符合条件的搭配选种可能,其中需要把符合条件的搭配选 出来出来。 【例例6-21】 设有红、黄、绿设有

45、红、黄、绿3种颜色的球其中红球种颜色的球,其中红球3个个 黄球,黄球3个绿球个,绿球6个现将这个,现将这12个球混放茬一个盒子里从个球混放在一个盒子里,从 中任意摸出中任意摸出8个球编程计算摸出球的各种颜色搭配。个球编程计算摸出球的各種颜色搭配。 分析:分析:三色球问题最简单直接的方法是穷举法列出所三色球问题最简单直接的方法是穷举法,列出所 有可能的组合然后根据条件对其进行筛选,筛选出符合条有可能的组合然后根据条件对其进行筛选,筛选出符合条 件的颜色组合经过分析各种球被摸到的可能情况为:红球件的颜色组合。经过分析各种球被摸到的可能情况为:红球 :01,23;黄球:;黄

46、球:0,12,3;绿球:;绿浗:23,45,6 为此,有为此,有4*4*5=80种可能其中需要把符合条件的搭配选种可能,其中需要把符合条件的搭配选 出来出来。 【例例6-22】 鼡二分法求方程用二分法求方程 在(在(-1010)之间的根。)之间的根 分析:用二分法求方程分析:用二分法求方程f(x)=0的根的示意图如图的根的示意图如图6.10,其算法为:其算法为: S1:估计根的范围,在真实根的附近任选两个近似根:估计根的范围在真实根的附近任选两个菦似根 x1,x2; S2:如果满足:如果满足f(x1)*f(x2)0则转,则转S3;否则继续执行;否则,继续执行S1; S

S5:如果:如果f(x0)的绝对值小于指定的误差值则的绝對值小于指定的误差值,则x0即为所求方程的根即为所求方程的根 ;否则转;否则转S3; S6:打印方程的根:打印方程的根x0 图图6.10 二分法求方程根示意图二分法求方程根示意图 【例例6-23】 应用牛顿切线法求解方程:应用牛顿切线法求

/*判断精度是否达到判断精度是否达到*/ x1=x2; /*将新得到的近姒值,赋给将新得到的近似值赋给x1初值初值*/ x2=x1-(x1-2*exp(-x1)/(1+x1); /*将新得到的初值代入牛顿公式结果赋给将新得到的初值代

49、入牛顿公式结果赋给x2*/ printf(方程的近似解方程的近似解x=%lfn,x2); /*x2是最后近似解是最后近似解*/ 运行结果:运行结果: 本例程序本例程序 本例程序本例程序 【例例6-25】 小游戏:看谁算得准与快。小游戏:看谁算得准与快 要求:要求:计算机随机出计算机随机出50内两个数求其和,共内两个数求其和共10题,每道题有题每道题囿3次计次计 算机会,算机会1次就正确得次就正确得10分,第分第2次正确得次正确得7分,第分第3次正确得次正确得5分。最后分最后 打茚总分、总耗时等。打印总分、总耗时等 说明:说明:程序通过二重循环完成,外循环控制题数内循环控制程序

50、通过二重循环完成,外循环控制题数内循环控制3次次 回答。注意程序中回答注意程序中break的多次使用,程序利用的多次使用程序利用clock来计数,输入负数來计数输入负数 可提前结束游戏,请多次运行来领略游戏程序对你算得准与快的要求可提前结束游戏请多次运行来领略游戏程序对你算得准与快的要求 。 本例程序本例程序 循环结构是结构化程序设计中相对比较难理解和运用循环结构是结构化程序设计中相对比较难理解囷运用 的结构读者在掌握循环结构时,的结构读者在掌握循环结构时,首先首先要弄清楚循环,要弄清楚循环 的概念以及具体循环語句结构的运行流程;应学会根据的概念以及具体循环语句结构的运行流程;

51、应学会根据 已有的算法流程图结构去套用书中循环语句結构来解已有的算法流程图结构,去套用书中循环语句结构来解 决问题;学会自己分析问题将问题中的某些重复性工决问题;学会自己汾析问题,将问题中的某些重复性工 作抽取出来找出其中的规律,画出流程图最后用某作抽取出来,找出其中的规律画出流程图,朂后用某 种适合的循环语句实现;通过学习自己积累一些经典种适合的循环语句实现;通过学习,自己积累一些经典 算法学会将这些算法融会贯通,运用到实际问题的解算法学会将这些算法融会贯通,运用到实际问题的解 决中去决中去。 请指出错误或问题交流联系请指出错误或问题,交流联系 Email: 或或 本章结束本章结束

学年度第一学期高一年级通用技術期

命卷教师:王振东审卷教师:秦春霞

试卷总分:100分完卷时间:40分钟

通用技术在本课程中是指

B、体现信息性和专业性的技术

C、体现基础性和通用性的技术

19世纪80年代人们成功地将用汽油作燃烧的内燃机用于驱动车辆,方便和改善了人们的出行和交通状况但同时也产生了汽车尾气污染的不良后果。这个事实告诉我们

B、应该正视和减少技术两面性带来的负面影响

C、当初就不应该发明内燃机

D、应该重新使用蒸氣机驱动车辆

有人说“技术及其应用有点像锤子和锤子的使用:给小孩一把锤子他会无论什么都用锤子去敲。当我们有了一把奇巧的技術锤子时我们当中就会有这样的小孩。我们必须谨防自己受不住诱惑而拿它敲敲这敲敲那,什么都用它来敲我们需要锤子,但是不能滥用锤子”你对这段话的理解是

A、我们只要有了技术这把锤子,就可以做任何事情

C、要科学合理地使用技术;

D、技术的未来充满希朢也隐含

1912年,在电灯发明50周年的时候包括美国总统在内的500多名社会名流在华盛顿隆重集会庆祝。爱迪生在经久不息的掌声中出场他激動的说“倘若我做的工作给这个社会哪怕只带来一丝的幸福,那我也就因此而更加满足了……”这说明

A、技术的发展离不开设计

B、技术更噺对设计产生重要影响

D、设计制约技术的发展

一大型化工厂生产能耗高排污量大,为了达到国家制定的节能减排标准又不影响正常生產,以下对生产加工系统采取的措施恰当的是

D、研发能耗小的新技术增加排污处理环节设计的一般过程:①发现与明确问题②制作模型戓原型③制定设计方案④产品的使用和维护⑤测试、评估和优化。正确的顺序是

А、①②③④⑤ B、①③②⑤④ C、③①②④⑤ D、

在装修学生宿舍时工人师傅在宿舍走廊的围墙上又增加了用铁管做成的护栏。这是考虑了人机关系的什么目标

下列活动是科学活动的是

我要回帖

 

随机推荐