4.26打卡

发布时间 2023-04-26 20:39:55作者: 恋恋恋白

一、问题描述:
马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,他们在
同一家饭馆吃饭,总共花了50先令。已知每个男人吃饭需要花3先令,每个女人吃饭需要
2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人。设计思路:

在问题分析中,我们抽象出了一个不方程组,显然得到了不定方程组的解,该问题也就解决了。但不定方程组中包含了x、y、z这3个变量,而方程只有两个,因此不能直接求出x、y、z的值。
而由方程3,我们得到了x的取值范围,因此可将x的有效取值依次代入不定方程组中(即方程1、2和3)中,能使3个方程同时成立的解即为该问题的解。为实现该功能,只需使用一个for循环语句即可。

三、程序流程图

 

 

 

四、代码实现

#include<stdio.h>

main()

{

    int x,y,z,number=0;

    printf("   Men Women Children\n ");

    for(x=0;x<=10;x++)

    {

        y=20-2*x;

        z=30-x-y;

        if(3*x+2*y+z==50)

            printf("%2d:%4d%5d%6d\n",++number,x,y,z);

    }

}