《C语言程序设计基础》课件第5章.ppt
运行结果:
分析:外循环中由变量i依次生成3~500之间的一个整数,内循环中由变量j依次生成一个测试数,在if语句中由表达式i%j==0来测试当前数是否为素数,如遇到一次整除,就建立标志,结束内循环。结束内循环时,如果标志变量flag为0,说明该数是素数,则计数并输出。 实训任务九熟悉循环结构控制语句
实训项目1分析以下问题,从每小题4个备选项中,选择一个正确项。
实训项目3分析程序,在下划线处填写适当的语句代码,使程序能够正确运行。
(1)计算1~10之间的奇数之和与偶数之和。
(4)打印输出所有的“水仙花数”。所谓水仙花数是指一个3位数,其各位数字立方之和等于该数本身。
解析:本题关键是取出3位数中的个位、十位、百位,如变量名为num,则个位数为num%10,十位数为num/10%10,百位数为num/10/10。
实训任务十学习循环结构程序设计的方法
设计求解以下项目问题的程序,并上机调试运行,得到正确结果。
实训项目1打印出以下字符图形。
实训项目2猴吃桃问题。有一天,小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第十天早上,小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。
实训项目3求1!+2!+3!+…+10!=?
实训项目4循环输出下图所示的乘法口诀表。
实训项目5从键盘输入一些数并输出,当遇到第一个既能被3整除又能被5整除的数时即停止。
?
5.5改变循环控制的语句
5.5.1break语句
break语句的一般形式为
break;
前面已经介绍,break语句可用在switch结构中,使执行流跳出switch结构。break语句也可用在循环结构中,使执行流跳出所在的循环,即提前结束循环。
例5.5使用break语句来改变循环控制。
运行结果:
分析:for循环中缺省了三个表达式,应该是一个死循环。但在程序中使用了“if(i100)break;”语句,使i达到101时就结束循环。这也是循环程序设计中,巧用break语句的一种方法。
5.5.2continue语句
continue语句的一般形式为
continue;
其功能是结束本次循环,即跳过循环体中continue语句后面尚未执行的循环体语句,转向循环头部,检测是否进行下一次循环。
例5.6输出100以内能被9整除的数。
编程思路:逐一检测9~100的整数能否被9整除,如能整除则输出该数,不能整除则不输出。
分析:“if(n%9!=0)continue;”语句判断当前数是否能被9整除,若能整除,不执行“continue;”语句,则执行printf函数调用,输出该数;若不能整除,则执“continue;”语句而跳过printf函数调用,不输出该数,结束本次循环,返回循环头部,开始下一次循环,直到满足循环结束条件。
例5.7编写程序,从键盘输入字符后显示,按Enter键,则结束字符输入;按Esc键,则放弃当前输入的字符。运行结果:
分析:程序中使用字符输入/输出库函数,程序开头要使用预处理命令#includeconio.h。for(;;)不控制循环,是通过两个if语句来实现对循环的控制。当按Enter键时,执行“break;”语句,立即结束字符输入;当按Esc键时,执行“continue;”语句,跳过“putchar(ch);”语句,返回循环头部,输入下一个字符。
5.6循环结构程序设计
循环结构程序设计时应考虑哪些问题?如何准确地设计循环结构程序?
一般来说,循环结构程序在设计时需考虑以下几方面的问题:
(1)循环初始化问题。循环初始化包括对循环控制变量设置初值和对循环体中相关变量设置初值。循环控制变量初值设置得恰当与否,关系到循环规律能否实现。如例5.1~例5.3中,如果循环控制变量i的初值设置为0,则要循环101次,第一次循环累加和变量加0,毫无意义。如果设置为大于1的数,循环次数不到100次,造成累加和不正确。给循环体中操作变量设置初值,需要根据具体问题具体分析。一般来说,要给加法和变量清零,乘积变量置1,以防未知数据带入,导致结果不正确。
(2)循环控制条件设置问题。按循环控制方式,循环可有计数控制和条件控制。计数控制循环是循环次数已知,一般用关系表达式作循环控制条件。对于循环次数未知的循环,一般要认真分析循环控制过程,找出规律,列出逻辑表达