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只鸡中,公鸡、母鸡、小鸡各是多少只?
哪里错了???怎么没有结果输出!!!计算机
{
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只鸡中,公鸡、母鸡、小鸡各是多少只?
哪里错了???怎么没有结果输出!!!计算机
{
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;
}
}
}
}
}
{
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() + "只。";
}
}
}
}
{
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() + "只。";
}
}
}
}
{
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组答案。
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() + "只");
}
}
}
}
我想问为什么按txtOutput.Text="\r\n方法:公鸡" + x.ToString() + "只;母鸡" + y.ToString() + "只;小鸡" + z.ToString() + "只。";这样输出 只显示一组答案?
而 this.txtOutput.Text += ("方法:公鸡" + x + " 只;母鸡" + y + "只;小鸡" + z + "只\r\n"); break;这样输出是七组答案呢?
{
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组答案。
为什么这样输出会有 七组答案 而我那样输出只输出一组答案呢!!!
你应该要+=,否则每次就覆盖掉了,只保留最后一次。
txtOutput.Text += "\r\n方法:公鸡" + x.ToString() ;
txtOutput.Text += "只;母鸡" + y.ToString();
txtOutput.Text += "只;小鸡" + z.ToString() + "只。";
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循环并不是这个程序的考察目的。而是考察你是否注意过尽早地写出判断语句、尽早跳出内层循环。
{
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));
}
}
}
我这个如何?我看各位都是三层循环,貌似两层就可以了吧
看看这个http://download.csdn.net/detail/guwei4037/6379857,你会对C#的理解更多一些。你多学习一下Lambda和Linq就可以了。你没觉得11楼的代码非常接近于人类的语言吗?