流程控制之循环

For循环

说明:循环就是自动执行某段代码、循环执行

语法:for(变量初始化;条件表达式’变量变化){

循环体;

}

变量初始化:循环的开始,给一个循环的变量,如$i=1;条件表达式:必须给循环一个可以退出的条件,否则就是死循环。如$i<=10;变量变化:让初始化的值发生改变,一直到达到条件为止。$i<=10;

流程控制图:

案例:1

输出1-100

for($i=1; $i<=100;$i++){

echo $i.'

’;//打印结果1-100并且换行

}

?>

案例:2

输出99乘法表

//分析:首先九九乘法表是由九行九列组成,先打印九行

For($i=1;$i<10;$i++){echo $i;}这是打印九行

根据外循环控制行数,内循环控制列数,那么打印九列就是在九for循环中再套一层for循环即for($i=1;$i<=9;$i++){

For($j=1;$j<=9;$j++){

Echo “$i x $j =”.$i*$j.’ ’;

}

echo “

”;

}打印出来的是一个9行9列的矩形,但是我们的乘法表是一个递减的三角形,行数不变列数逐渐递减,内部循环控制列数,也就是$j控制的表达式不是一直是9,我们可以看出第一行的时候只有一列,第二行的时候只有两列,直到第9行的时候有9列,从而可以分析出,行数和列数的增加的基数是一样的,就可以判定$j的取值范围就是$j<=$i

即:

for($i=1;$i<=9;$i++){

For($j=1;$j<=$i;$j++){

Echo “$i x $j =”.$i*$j.’ ’;

}

echo “

”;

}

看出$i和$j位置反了,换一下位置即可

把Echo “$i x $j =”.$i*$j.’ ’;

换成Echo “$jx $i =”.$i*$j.’ ’;

for($i=1;$i<=9;$i++){

For($j=1;$j<=$i;$j++){

Echo “$j x $i =”.$i*$j.’ ’;

}

echo “

”;

}

?>

案例2:打印金字塔

//打印金字塔

for($i=1; $i<=6; $i++){

for($a=6; $a>$i; $a–){

echo “ ”;

}

for($j=1; $j<=$i; $j++){

echo ‘* ’;

}

echo ‘

’;

}

案例3打印空心菱形

echo ‘

’;//打印空心菱形for($i=1; $i<=6; $i++){for($a=1; $a<=6-$i; $a++){echo “ ”;}for($j=1; $j<=$i*2-1; $j++){if($i==1){echo ‘*’;}elseif($j==1||$j==$i*2-1){echo ‘*’;}else{echo ‘ ’;}}echo ‘

’;}for($i=5; $i>=1; $i–){for($a=1; $a<=6-$i; $a++){echo “ ”;}for($j=1; $j<=$i*2-1; $j++){if($i==1){echo ‘*’;}elseif($j==1 || $j==$i*2-1){echo ‘*’;}else{echo “ ”;}}echo ‘

’;}

实战案例1

一张纸的厚度是0.01毫米,则该纸对折30次后是多厚(据说超过珠穆朗玛峰的高度)。反过来,一张纸对折几次后,就超过1米厚了?

$p=0.01/1000;//把毫米换成米for($i=1; $i<=30; p="">=1&&$p<2){echo '

';echo '对折第'.$i.'次后的厚度超过1m';echo '

';}}

实战案例2

写一个程序输出1到100这些数字。但是遇到数字为3的倍数的时候,输出“三”替代数字,为5的倍数用“五”代替,既是3的倍数又是5的倍数则输出“三五”。

for($i=1;$i<=100;$i++){if($i%3==0&&$i%5==0){echo '三五';}elseif($i%3==0){echo '三';}elseif($i%5==0){echo'五';}else{echo $i;}echo '

';}

while循环

语法:变量的初始值;

while(条件表达式){

循环体;

变量的变化;

循环1-100

案例2:99乘法表

实战案例1

假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。

$m=100000;$k=1;while($m>=5000){if($m>50000){$m=$m*0.95;}elseif($m<=50000){$m=$m-5000;}echo '剩余'.$m.'经过'.$k.'

';$k++;}

相关文章