虽然前面给出了选择循环结构类型的原则性和一般性意见,但实际上这3种基本结构之间是可以相互转化的。在介绍各种基本循环结构时,选用了同一个问题(求1~100的累加和),说明这3种基本循环结构都可以实现这个功能,也就是说,3种基本循环结构之间是可以相互转化的。
下面举例说明这3种基本循环结构之间的相互转化。
例5.10 判断输入的正整数是否为素数。
解题思路:
素数是指除了能被1和本身整除,不能被其他任何整数整除的数。
判断素数的方法:把n当作被除数,把m=2~(n-1)依次作为除数,判断被除数n与m相除的结果。若都除不尽,也就是余数不为0,则说明n为素数;反之,只要有一次能除尽(余数为0),说明存在另外一个因子,则该数就不是素数。用数学方法已经证明:只需要用2~n的算术平方根(取整数)去除n,即可得到正确的判定结果。
算法如下:
(1)从键盘输入一个正整数n。
(2)将n的算术平方根(取整数)赋值给k。
(3)m从2变化到k,依次计算n%m是否为0。
(4)若n%m为0,则n不是素数,并终止其余m值的继续检验;否则令m=m+1,并继续对其余m值进行检验,直到全部检验完毕,才可以判定n为素数。
分别利用3种基本循环结构实现该算法的具体程序如下。
(1) while语句构成的循环结构
编写程序:(www.daowen.com)
创建一个名为“eg5_10a.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
(2)do-while语句构成的循环结构
编写程序:
创建一个名为“eg5_10b.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
(3) for语句构成的循环结构
编写程序:
创建一个名为“eg5_10c.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
程序说明:
程序中均使用了sqrt ( )函数,该函数属于数学库函数,因此需要在程序开始处包含math.h。本例用3种循环结构解决了同一问题,再次说明3种基本循环结构可以相互转化。在程序设计过程中,不必局限于某种循环结构,应该结合实际问题灵活运用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。