C语言:用函数的形式写出36块砖,36人搬。男搬4,女搬3,两个小孩抬一块

Python015

C语言:用函数的形式写出36块砖,36人搬。男搬4,女搬3,两个小孩抬一块,第1张

从数学角度看 设男,女,儿童为x,y,z。

不等式组:

x+y+z = 36;

4x+3y+1/2z = 36

求x,y,z的值就好了。

数学的解法是讲究推理。程序呢不讲究推理,你只要模拟试数的过程就好了。

那么我应该按照什么原则试数呢?

首先确定x,y,z的范围

0<=x <= 36/4=9

0<=y<=36/3=12

0<=z<=36/0.5=18且z为偶数,因为1个小孩办不了一块砖。

然后看看x,y,z是否符合这个不等式组。

程序如下:

include <stdio.h>

int main(void)

{

    for(int x = 0 x <= 9 ++x)

    {

        for(int y = 0 y <= 12 ++y)

        {

            for(int z = 0 z <= 18 z += 2)

            {

                if(x+y+z == 36 && 4x+3y+z/2 == 36)

                    printf("男%d,女%d,小孩%d", x, y , z)

            }

         }

     }

    return 0

}

此程序不是最高效的,但是你看的懂。

#include<stdio.h>

void main()

{

int man,wman,child,zz

for(man=0man<=9man++)

{

for(wman=0wman<=12wman++)

{

child=36-wman-man

if(36==child/2+3*wman+4*man&&child%2==0)printf("man=%d\nwman=%d\nchild=%d\n",man,wman,child)

}

}

}

为什么?可以取到吧。

main()

{

int a,b,c

for(a=04*a<=36a++)

for(b=04*a+3*b<=36b++)

for(c=04*a+3*b+c/2<=36c+=2)

if(4*a+3*b+c/2==36)

printf("\nman:%3dwoman:%3dchild:%3d",a,b,c)

}