private void btnOK_Click(object sender, EventArgs e)
        {
            int x = 0, y = 0, z = 0;
            for (; x <= 20; x++)
            {
                for (; y <= 33; y++)
                {
                    for (; z <= 99; z++)
                    {
                        if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                        {
                            txtOutput.Text = "\r\n方法:公鸡" + x.ToString() ;
                            txtOutput.Text += "只;母鸡" + y.ToString();
                            txtOutput.Text += "只;小鸡" + z.ToString() + "只。";
                        }
                    }
                }
            }
        }
用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。问:在这100只鸡中,公鸡、母鸡、小鸡各是多少只?
哪里错了???怎么没有结果输出!!!计算机

解决方案 »

  1.   

     static void Main(string[] args)
            {
                for (int x = 0; x <= 20; x++)
                {
                    for (int y = 0; y <= 33; y++)
                    {
                        for (int z = 0; z <= 99; z++)
                        {
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            {
                                Console.WriteLine("x:" + x + " y:" + y + " z:" + z);
                                break;
                            }
                        }
                    }
                }
            }
      

  2.   

    for (int x = 0; x <= 20; x++)
                {
                    for (int y = 0; y <= 33; y++)
                    {
                        for (int  z = 0; z <= 99; z++)
                        {
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            {
                                txtOutput.Text = "\r\n方法:公鸡" + x.ToString();
                                txtOutput.Text += "只;母鸡" + y.ToString();
                                txtOutput.Text += "只;小鸡" + z.ToString() + "只。";
                            }
                        }
                    }
                }
      

  3.   

    for (int x = 0; x <= 20; x++)
                {
                    for (int y = 0; y <= 33; y++)
                    {
                        for (int  z = 0; z <= 99; z++)
                        {
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            {
                                txtOutput.Text = "\r\n方法:公鸡" + x.ToString();
                                txtOutput.Text += "只;母鸡" + y.ToString();
                                txtOutput.Text += "只;小鸡" + z.ToString() + "只。";
                            }
                        }
                    }
                }
      

  4.   

     for (int x = 0; x <= 20; x++)
                {
                    for (int y = 0; y <= 33; y++)
                    {
                        for (int z = 0; z <= 99; z++)
                        {
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            {
                                this.txtOutput.Text += ("方法:公鸡" + x + " 只;母鸡" + y + "只;小鸡" + z + "只\r\n");
                                break;
                            }
                        }
                    }
                }是7组答案。
      

  5.   

      
               for (int x=0;x <= 20; x++)
                {
                    for (int y=0; y <= 33; y++)
                    {
                        for (int z = 0;z <= 99; z++)
                        {
                            
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            { 
                               listBox1.Items.Add("方法:公鸡" + x.ToString()+ "只母鸡" + y.ToString()+"只小鸡" + z.ToString() + "只");
                            }
                        }
                    }
                }
      

  6.   

    只有四组答案,有些地方还需修改!第二组第四组第六组不正确。
    我想问为什么按txtOutput.Text="\r\n方法:公鸡" + x.ToString() + "只;母鸡" + y.ToString() + "只;小鸡" + z.ToString() + "只。";这样输出  只显示一组答案?  
    而 this.txtOutput.Text += ("方法:公鸡" + x + " 只;母鸡" + y + "只;小鸡" + z + "只\r\n"); break;这样输出是七组答案呢?
      

  7.   

     for (int x = 0; x <= 20; x++)
                {
                    for (int y = 0; y <= 33; y++)
                    {
                        for (int z = 0; z <= 99; z++)
                        {
                            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100))
                            {
                                this.txtOutput.Text += ("方法:公鸡" + x + " 只;母鸡" + y + "只;小鸡" + z + "只\r\n");
                                break;
                            }
                        }
                    }
                }是7组答案。
    为什么这样输出会有 七组答案   而我那样输出只输出一组答案呢!!!
      

  8.   

    你没看我写的代码?
    你应该要+=,否则每次就覆盖掉了,只保留最后一次。
    txtOutput.Text += "\r\n方法:公鸡" + x.ToString() ;
    txtOutput.Text += "只;母鸡" + y.ToString();
    txtOutput.Text += "只;小鸡" + z.ToString() + "只。";
      

  9.   

    四个方案using System;
    using System.Linq;namespace ConsoleApplication1
    {
        static class Program
        {
            static void Main(string[] args)
            {
                var query = from 公鸡 in Enumerable.Range(0, 20)
                            let m1 = 100 - 公鸡 * 5
                            from 母鸡 in Enumerable.Range(0, m1 / 3)
                            where 公鸡 + 母鸡 <= 100
                            let m2 = m1 - 母鸡 * 3
                            where m2 >= 0
                            let 小鸡 = m2 * 3
                            where 公鸡 + 母鸡 + 小鸡 == 100
                            select new { 公鸡, 母鸡, 小鸡 };
                int cn = 0;
                foreach (var x in query)
                    Console.WriteLine("方案{0}: 公鸡={1},母鸡={2},小鸡={3}", ++cn, x.公鸡, x.母鸡, x.小鸡);
                Console.ReadKey();
            }
        }
    }打印出方案1: 公鸡=0,母鸡=25,小鸡=75
    方案2: 公鸡=4,母鸡=18,小鸡=78
    方案3: 公鸡=8,母鸡=11,小鸡=81
    方案4: 公鸡=12,母鸡=4,小鸡=84这类题目最重要的是考察,是否知道在for循环时进行优化。例如
    1. 先循环公鸡数,而不是小鸡数。
    2. 母鸡不会从0到33去循环,而是从0到“公鸡*5/3”。。
    3. 对小鸡,就不要再写什么循环语句了。
    说白了,会写嵌套的for循环并不是这个程序的考察目的。而是考察你是否注意过尽早地写出判断语句、尽早跳出内层循环。
      

  10.   

    哈哈,11楼正解,4个答案,我忽略了。另外他的lambda写法值得参考一下。
      

  11.   

    大神,能推荐几本C#.NET的书麽!!!
      

  12.   

                for (int i = 0; i <= 20; i++) 
                {
                    for (int j = 0; j <= 100 - i; j++)
                    {
                        int z = 100 - i - j;
                        if (5 * i + 3 * j + z / 3 == 100)
                        {
                            if (z % 3 == 0)
                                Console.WriteLine(string.Format("公鸡{0},母鸡{1},小鸡{2}", i, j, z));
                        }
                    }
                }
    我这个如何?我看各位都是三层循环,貌似两层就可以了吧
      

  13.   

    看#11正解,看不懂啊
    看看这个http://download.csdn.net/detail/guwei4037/6379857,你会对C#的理解更多一些。你多学习一下Lambda和Linq就可以了。你没觉得11楼的代码非常接近于人类的语言吗?