用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,效果如下:
一共有三组,这是从100*100*100中结果中筛选出来的满足条件的,如果人工筛选,那工作量就太大了!但是程序却一闪而过就出来的,所以我们编程得有一种思想,让程序去解决问题,我们只需发布命令就行!
好了,下面说一下需要注意的地方:我们这编程的时候如果使用的是搜狗输入法,最好做如图所示的操作,
这样就可以大大的避免在编辑代码的时候输入中文符号,并因此而出现调试程序出现错误.
在我用 if语句 定义条件的时候,出现了这样一幕:
满足条件的有: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) 就完美解决了!