用C#解决100钱买100鸡的数学题 技术文章

我们老师今天给我们布置了一个小作业,就是百钱买百鸡,具体的题目是这样的:

100元钱 要求买100只鸡 
其中,
公鸡 5/只
母鸡 3/只
小鸡 1元*3只

求有几种组合?


明显题目中有三个未知数,用方程求解貌似不可能,因为答案肯定不为唯一.


好吧,我就用C#来做吧,开始,我们得定义三个变量吧,  a-公鸡  ,b-母鸡 , c-小鸡 ,

条件就是:a+b+c=100(只)  而且还得同时满足 : 5*a+3*b+c/3=100(元)

那么,很明显,我们可以用 if语句 来搞定它! 打开我们的visual studio 2013 ,新建项目,下面是代码,我先贴下完整的代码,后面说一些注意的事项.

---------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 百钱买百鸡
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int a = 1; a <= 100; a++)  //这里我们定义变量a为公鸡
                for (int b = 0; b <= 100; b++)  //定义变量b为母鸡
                    for (int c = 0; c <= 100; c++)  //定义变量c为小鸡
                        if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0)  //这里是重点,我们用if循环来控制条件,如果达到条件就运行,否者就不运行.
                            Console.WriteLine("满足条件的有:{0},{1},{2},", a, b, c);  //输出我们的三个变量的结果
                        {
                        }
                    {
                    }
                {
                }
            {
            }
        }
    }
}

然后 ctrl + F5 调试运行,OK,效果如下:

2014-09-18-07000016.png

一共有三组,这是从100*100*100中结果中筛选出来的满足条件的,如果人工筛选,那工作量就太大了!但是程序却一闪而过就出来的,所以我们编程得有一种思想,让程序去解决问题,我们只需发布命令就行!

好了,下面说一下需要注意的地方:我们这编程的时候如果使用的是搜狗输入法,最好做如图所示的操作,

2014-09-18-07000014.png

这样就可以大大的避免在编辑代码的时候输入中文符号,并因此而出现调试程序出现错误.

在我用 if语句 定义条件的时候,出现了这样一幕:

2014-09-18-08000018.png

满足条件的有:3,20,77,
满足条件的有:4,18,78,
满足条件的有:7,13,80,
满足条件的有:8,11,81,
满足条件的有:11,6,83,
满足条件的有:12,4,84,
请按任意键继续. . .
很明显,这其中的组合又不满足的,因为小鸡的个数不可能是小数啊! 这是在最开始的时候没有想到的.......

我们在看出现这个问题的代码吧:

if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100)  可以看出,我们没有定义小鸡能被3整除.加&&c%3==0

最后变成: if ((a + b + c) == 100 && (a * 5 + b * 3 + c / 3) == 100&&c%3==0)   就完美解决了!

 

标签: 编程 C#

admin 发布于  2014-9-18 06:42