首页 理论教育 PHP应用开发基础-任务二:使用continue实现跳转

PHP应用开发基础-任务二:使用continue实现跳转

时间:2023-11-03 理论教育 版权反馈
【摘要】:continue 语句用在循环结构中,执行continue 语句后,continue 语句之后的循环体代码不再执行,即终止本次循环,转去执行下一次循环。图3-16continue 语句的运行效果综合举例编程实现对学生的百分制成绩进行等级划分。注意多分支if 的条件的书写和switch-case 的入口的构造。如果空格与字符不能对齐,可设置等宽字体,如Courier New、幼圆等。例如,累乘的结果存入变量$fact 中,注意累乘的初始值置为1。A. 1B. 2C. falseD.true5. 语句for;和语句for;执行的次数分别是()。

PHP应用开发基础-任务二:使用continue实现跳转

continue 语句用在循环结构中,执行continue 语句后,continue 语句之后的循环体代码不再执行,即终止本次循环,转去执行下一次循环。

例如,输出10 以内的不能被2 和3 整除的自然数。编写代码如下所示:

运行结果如图3-16 所示。

图3-16 continue 语句的运行效果

综合举例

【例3-1】编程实现对学生的百分制成绩进行等级划分。如果成绩为90~100 分,输出“该成绩的等级为优”;如果成绩为80~89 分,输出的等级为“良”;如果成绩为70~79 分,输出的等级为“中”;如果成绩为60~69 分,输出的等级为“及格”;如果成绩在60 分以下,输出的等级为“不及格”。

分析:这是典型的多分支问题。可以使用多分支if-else if-else 结构或者switch-case 结构。注意多分支if 的条件的书写和switch-case 的入口的构造。

定义学生成绩$grade,使用多分支if-else if-else 结构实现的代码如下:

使用switch-case 结构实现的代码如下:

【例3-2】利用循环编程实现输出菱形图案,如图3-17 所示。

图3-17 菱形图案

分析:这是一个菱形图案,每行的输出特点是,先打印空格,再打印星号(*)图案。寻找规律,使用循环嵌套

方法一:先打印上面的5 层,再打印下面的4 层。每一层先打印空格,再打印星号(*)。定义正三角的层数为$n,编写代码如下:

说明:在网页上输出空格可以使用echo“ ”。如果空格与字符不能对齐,可设置等宽字体,如Courier New、幼圆等。可设置如下:

方法二:利用图案相对于中间上下对称,使用绝对值函数abs()辅助实现打印这个图案的源代码如下:

方法三:利用数学关系|x|+|y|≤k,使用绝对值函数abs()辅助实现打印这个图案的源代码如下:

【例3-3】输出九九乘法表,如图3-18 所示。

图3-18 九九乘法表

分析:九九乘法表的第一行输出1 个式子,第二行输出2 个式子,……,第九行输出9个式子。可以使用循环嵌套,外循环控制输出的行,内循环正好依靠外循环作为输出式子个数的边界条件。使用表格标签,编写代码如下所示:

【例3-4】输出100 以内的素数。素数是指大于1 的自然数中,除了1 和它本身以外不再有其他因数,这样的数称为素数。要求:每输出10 个素数换行。

分析:根据素数的概念,转化描述为:如果n 是素数,是指n 不能被2~(k-1)之间(包括2 和k-1)的任何整数整除。所以只要从2~(k-1)逐个相除,如果有一个数能被k 整除,说明k 不是素数;否则,k 是素数。编写代码如下所示:

判断素数时,循环比较的终止条件可以是n-1,n/2、sqrt(n)等。显然,sqrt(n)的比较判断次数最少,程序运行效率最高。

【例3-5】求n!。例如n=5,输出5!。

分析:这是累乘求积的典型问题。例如,累乘的结果存入变量$fact 中,注意累乘的初始值置为1。编写代码如下所示:

【例3-6】猴子吃桃问题:猴子第1 天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第2 天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第10 天早上想再吃时,见只剩下一个桃子了。求第1 天共摘了多少?

分析:这个问题倒过来想相对容易一些,第10 天,有1 个桃子,第9 天有2*(1+1)个桃子,第8 天有2*(2*(1+1)+1) 个桃子,以此类推。编写代码如下所示:

(www.xing528.com)

【例3-7】百钱买百鸡问题。公鸡5 元1 只,母鸡3 元1 只,小鸡1 元3 只,100 元钱刚好买100 只鸡,求公鸡、母鸡、小鸡各有几只?(这是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?)

分析:这是使用穷举法的典型问题。如果列方程会发现有3 个未知数却只能列出两个方程,这使得问题的求解变得困难。分析不难发现,每种鸡都有一个取值范围,例如公鸡数量的取值范围是0~20,母鸡数量的取值范围是0~33,小鸡的数量是0~(100-公鸡数量-母鸡数量),使用嵌套循环和条件语句,逐个去试,满足条件“百钱买百鸡”的就是一组解,编写代码如下所示:

在PHP 中,由于$x/3 不会自动取整,因此if 条件中的$x%3==0 可不必使用。

项目练习

一、选择题

1. 以下代码运行的结果是()。

<?php if($i="") {echo "a";}else {echo "b";} ?>

A. a B. b C. 条件不足,无法确定 D. 运行出错

2. 以下代码运行的结果是()。

<?php if ('1e3'== '1000') echo'LOL';?>

A. 无任何输出结果 B. LOL C. 不执行且报错 D. 以上都不正确

3. 以下代码输出结果是()。

A. y=0 B. y=1 C. y=-1 D. 以上都不正确

4. 以下代码输出结果是()。

A. 1 B. 2 C. false D.true

5. 语句for($k=0;$k=1;$k++);和语句for($k=0;$k==1; $k++);执行的次数分别是()。

A. 无限和0 B. 0 和无限 C. 都是无限 D. 都是0

二、程序分析题

1. 以下程序的输出结果是___________。

2. 以下程序的输出结果是___________。

3. 以下程序的输出结果是___________。

4. 以下程序的输出结果是___________。

5. 以下程序的输出结果是___________。

三、编程题

1. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…。编写PHP 程序,求出这个数列的前20 项之和(注意分子和分母的变化规律)。

2. 将1980—2020 年间的所有闰年打印输出。闰年则应符合以下两个条件之一:

(1)能被4 整除,但不能被100 整除;

(2)能被400 整除。

3. 输出1000 以内的完全数。一个自然数如果它的所有真因子(即除了自身以外的约数)的和等于该数,那么这个数就是完全数,也称为完数。注意:1 不是完数。例如,6 的真因子有1、2、3,且6=1+2+3,所以6 是一个完全数。

4. 卖西瓜。有1 020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?

5. 输出斐波那契数列的前20 项。斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…,斐波那契数列可以递归的定义:F0=0,F1=1,Fn=Fn-1+Fn-2(F0 表示第0 项,F1表示第1 项,以此类推,n 为大于等于2 的自然数),也就是说,斐波那契数列由0 和1 开始,之后的斐波那契数列就由之前的两数相加。

6. 鸡兔同笼。有若干只鸡兔同在一个笼子里,从上面数,有35 个头,从下面数,有94只脚,问笼中各有多少只鸡和兔?(鸡兔同笼是中国古代的数学名题之一。大约在公元5 世纪,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?)

7. 赔鸡蛋钱。一个人很倒霉,不小心打碎了一位商贩的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋。那商贩说,他也不清楚。只记得每次拿2 个则剩1 个,每次拿3 个则剩2个,每次拿5 个则剩4 个,若1 个鸡蛋1.2 元,请你帮忙计算应赔偿多少钱?

8. 企业根据利润提成发放奖金。利润(Profit)低于或等于10 万元时,奖金可提10%;利润高于10 万元,低于20 万元时,低于10 万元的部分按10%提成,高于10 万元的部分,可提成7.5%;以此类推,利润在20 万到40 万之间时,高于20 万元的部分,可提成5%;高于40 万元的部分,可提成1%。假设当月利润Profit=351357 元,求应发放奖金总数?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈