$x的疑问

来源:2-9 编程练习

cfrq_xuan

2019-11-24 20:26:31


// for($m=1;$m<33;$m++){
// for($g=1;$g<20;$g++){
// $x=100-$g-$m;
// if($g+$m+$x==100&&$g*5+$m*3+$x/3==100){
// echo '公鸡有'.$g.'<br/>';
// echo '母鸡有:'.$m.'<br/>';
// echo '小鸡有:'.$x.'<br/>';
// echo '<hr/>';
// }
// }
// }

for($m=1;$m<33;$m++){
for($g=1;$g<20;$g++){
for($x=3;$x<300;$x=+3){
if($g+$m+$x==100&&$g*5+$m*3+$x/3==100){
echo '公鸡有'.$g.'<br/>';
echo '母鸡有:'.$m.'<br/>';
echo '小鸡有:'.$x.'<br/>';
echo '<hr/>';
}
}
}
}

老师,$x为什么必须设置为$x=100-$g-$m,后面恒等式中也有$g+$m+$x=100,不是一个意思么?为什么不能来个for循环呢?

写回答

4回答

好帮手慕小尤

2019-11-27

同学你好,需要设置$x=100-$g-$m表达式的是两层循环。代码如下:

for($m=1;$m<33;$m++){
    for($g=1;$g<20;$g++){
        $x=100-$g-$m;
        if($g+$m+$x==100&&$g*5+$m*3+$x/3==100){
            echo '公鸡有'.$g.'<br/>';
            echo '母鸡有:'.$m.'<br/>';
            echo '小鸡有:'.$x.'<br/>';
            echo '<hr/>';
        } 
    }
}

运行流程:

当m=1时,m小于33则开始循环

    当g=1时,g小于20 开始循环,计算100-1-1的表达式得出x值,然后进行判断,1+1+98==100(成立)5+3+32.666==100(不成立)则g++键入下次循环

    当g=2时,g小于20 开始循环,计算100-2-1的表达式得出x值,然后进行判断,2+1+97==100(成立)10+3+32.333==100(不成立)则g++键入下次循环......执行到g大于20时,循环结束开始外层循环的第二次循环。

当m=2时,m小于33则开始循环

    当g=1时,g小于20 开始循环,计算100-1-2的表达式得出x值,然后进行判断,1+2+98==100(成立)5+6+32.333==100(不成立)则g++键入下次循环

    当g=2时,g小于20 开始循环,计算100-2-2的表达式得出x值,然后进行判断,2+2+96==100(成立)10+6+32==100(不成立)则g++键入下次循环 ......

一直循环到 m=4,g=12 时,计算100-12-4的表达式得出x值。然后进行判断12+4+84==100(成立)并且60+12+28(成立)则进行输出。

然后一直执行到m大于33时,结束循环。如果同学不定义为$x=100-$g-$m,则无法获取到小鸡的数量,导致if判断不成立,导致无法计算出公鸡母鸡与小鸡的数量。

祝学习愉快!

0

好帮手慕小尤

2019-11-26

同学你好,同学是想问$x=100-$g-$g与三次循环的两种实现方式的关系吗?如果是,则是没有关系的。两次循环是通过循环得到公鸡与母鸡的只数,然后通过100减去公鸡与母鸡的只数得出小鸡的数量。三次循环是通过循环来确定数量。所以两个没有关系。如果不是请同学重新描述一下问题。

祝学习愉快!

0
hfrq_xuan
h 我意思是,如果不定义为$x=100-$g-$m,会不会不能得出结果
h019-11-26
共1条回复

好帮手慕小尤

2019-11-26

同学你好,三个循环代码参考:

for($x=1;$x<=20;$x++){
    for($y=1;$y<=33;$y++){
        for($z=1;$z<=100;$z++){
            if(($x+$y+$z)==100 && ($x*5+$y*3+$z/3)==100 ){
                echo '公鸡有',$x,'<br/>母鸡有:',$y,'<br/>小鸡有:',$z,'<hr/>';
            }
        }
    }
}

祝学习愉快!

0
hfrq_xuan
h 那为什么一定要要把$x=100-$g-$g?它这种和三个未知数,三个方程能解答,有什么关系吗?
h019-11-26
共1条回复

好帮手慕小尤

2019-11-25

同学你好,1. $x=100-$g-$m:是将$x当为小鸡,然后通过100减去公鸡和母鸡的只数,就是小鸡的只数变量。

2. $g+$m+$x==100 是判断公鸡+母鸡+小鸡的数量是否是100。所以$x=100-$g-$m与$g+$m+$x==100意思是不一样的。

3. 建议同学使用两个循环实现,减少了循环次数,提高运行效率。

祝学习愉快!

0
hfrq_xuan
h 如果用三个循环的话,应该如何写?谢谢!
h019-11-25
共1条回复

0 学习 · 4928 问题

查看课程