C#四色球
程序员文章站
2022-03-16 07:57:26
...
有红、黄、黑、白4色球各一个,放置在编号为1、2、3、4的4个盒子里,每个盒子放一只球,它们的顺序不知。
甲、乙、丙三人猜测放置顺序如下:
甲:黑球在1号盒子,黄球在2号盒子;
乙:黑球在2号盒子,白球在3号盒子;
丙:红球在2号盒子,白球在4号盒子。
结果证明,甲、乙、丙三人各猜中了一半,找出4色球在盒子的放置情况。
实现for循环与while循环的转换。
for循环
利用三个嵌套的for循环遍历前三个球的位置,最后一定要判断几个球的值不相等,即不在同一盒子内;正因几个球不在同一盒子内,所以几个球的值之和是固定不变的,d的值即4球总值10与前边a,b,c的值之差,再用一个就能轻而易举的算出4色球的位置。
代码如下:
namespace _11_12CS
{
class Program
{
static void Main(string[] args)
{
int a, b, c, d;
for(a=1;a<=4;a++)
{
for (b = 1; b <= 4; b++)
{
for (c = 1; c <= 4; c++)
{
if (a != b && b != c)
{
d = 10 - a - b - c;
if ((c == 1 ^ b == 2) && (c == 2 ^ d == 3) && (a == 2 ^ d == 4))
{
Console.Write("红球放置在{0}号,黄球放置在{1}号,", a, b);
Console.WriteLine("黑球放置在{0}号,白球放置在{1}号,", c, d);
}
}
}
}
}
Console.Read();
}
}
}
输出结果为:
while循环
与for循环思想一样,只不过将语句变为while循环,初始化、循环条件与循环后的操作位置略有不同。
static void Main(string[] args)
{
int a = 1;
int d = 0;
while(a<=4)
{
int b = 1;
while(b<=4)
{
int c = 1;
while(c<=4)
{
if (a != b && b != c)
{
d = 10 - a - b - c;
if ((c == 1 ^ b == 2) && (c == 2 ^ d == 3) && (a == 2 ^ d == 4))
{
Console.Write("红球放置在{0}号,黄球放置在{1}号,", a, b);
Console.WriteLine("黑球放置在{0}号,白球放置在{1}号,", c, d);
}
}
c++;
}
b++;
}
a++;
}
Console.Read();
}
值得注意的一点是,因为本题中while语句是三条嵌套,每条while语句的初始化条件都要紧放在这条while语句之前,不能放在其他while语句前,以保证a,b,c搭配可能性的完整性。
输出结果如下:
上一篇: Android背景渐变
下一篇: Android渐变界面设计