码迷,mamicode.com
首页 > Windows程序 > 详细

C#编程—第五天--循环语句for

时间:2015-05-05 23:26:17      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

for穷举法、迭代法

穷举法练习:

            //穷举法:
            //1、找100以内的与7有关的数
            //2、小明单位发了一百元的购物卡,他到超市买洗化用品,一是洗发水(15元),二是香皂(2元),三是牙刷(5元)怎么可以正好把一百元花完。
            //3、公鸡两文钱一只,母鸡一文钱一只,小鸡半文钱一只,花100文钱买100只鸡,该如何购买?
            //4、大马驮2石粮食,中马驮1石粮食,两头小马驮一旦粮食,要用100匹马,驮100石粮食,该如何调配
            //5、有一分钱、两分钱、五分钱硬币,要组合出两角有哪些组合方法。
            //6、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
            //A和B两人中至少去一人;                                a+b>=1
            //A和D不能一起去;                                      a+d<=1
            //A、E和F三人中要派两人去;                             a+e+f==2
            //B和C都去或都不去;                  注释:            b+c!=1
            //C和D两人中去一个;                                    c+d==1
            //若D不去,则E也不去。                                  d+e==0||d==1
            //问应当让哪几个人去?
            //7、123()45()67()8()9=100;要求在()里面填写+或-使等式成立。


            //2、小明单位发了一百元的购物卡,他到超市买洗化用品,一是洗发水(15元),二是香皂(2元),三是牙刷(5元)怎么可以正好把一百元花完。

            for (int i = 1; i <= 6; i++)//i:单独买洗发水最多可以买6
            {
                for (int j = 1; j <= 50; j++)//j:香皂单独买最多50
                {
                    for (int n = 1; n <= 20; n++)//n:牙刷单独买最多20
                    {
                        if (15 * i + 2 * j + 5 * n == 100)//判断什么情况可以把一百元花光
                        {
                            Console.WriteLine("{0}瓶洗发水和{1}块香皂和{2}个牙刷一共一百元", j, j, n);
                        }
                    }
                }
            }

            //3、公鸡两文钱一只,母鸡一文钱一只,小鸡半文钱一只,花100文钱买100只鸡,该如何购买?

            for (int i = 0; i < 50; i++)//i:公鸡两文钱一只 
            {
                for (int j = 0; j < 100; j++)
                {
                    for (int n = 0; n < 200; n++)
                    {

                        if (2 * i + j + 0.5 * n == 100 && i + j + n == 100)
                        {
                            Console.WriteLine("满足条件需要公鸡{0}只,母鸡{1},小鸡{2}。", i, j, n);
                        }

                    }
                }
            }



            //4、大马驮2石粮食,中马驮1石粮食,两头小马驮一旦粮食,要用100匹马,驮100石粮食,该如何调配

            for (int i = 1; i <= 50; i++)
            {
                for (int j = 1; j <= 100; j++)
                {
                    for (int n = 1; n <= 200; n++)
                    {
                        if (2 * i + j + 0.5 * n == 100 && i + j + n == 100)
                        {
                            Console.WriteLine("满足条件需要大马{0}只,中马{1},小马{2}。", i, j, n);
                        }
                    }
                }
            }




            //某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
            //A和B两人中至少去一人;                                a+b>=1
            //A和D不能一起去;                                      a+d<=1
            //A、E和F三人中要派两人去;                             a+e+f==2
            //B和C都去或都不去;                  注释:            b+c!=1
            //C和D两人中去一个;                                    c+d==1
            //若D不去,则E也不去。                                  d+e==0||d==1
            //问应当让哪几个人去?


            for (int a = 0; a <= 1; a++)
            {
                for (int b = 0; b <= 1; b++)
                {
                    for (int c = 0; c <= 1; c++)
                    {
                        for (int d = 0; d <= 1; d++)
                        {
                            for (int e = 0; e <= 1; e++)
                            {
                                for (int f = 0; f <= 1; f++)
                                {
                                    if (a + b >= 1 && a + d <= 1 && a + e + f == 2 && b + c != 1 && c + d <= 1 && (d + e == 0 || d == 1))
                                    {
                                        Console.WriteLine("A:{0}\nB:{1}\nC:{2}\nD:{3}\nE:{4}\nF:{5}", a, b, c, d, e, f);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            //7、123()45()67()8()9=100;要求在()里面填写+或-使等式成立。

            //string a, b;
            //a = "+";
            //b = "-";

            for (int i = -1; i <= 1; i += 2)// 初始值-1 判断条件限定i只能是-1 或者+1       i+=2  ==>   i=i+2
            {
                for (int j = -1; j <= 1; j += 2)
                {
                    for (int n = -1; n <= 1; n += 2)
                    {
                        for (int m = -1; m <= 1; m += 2)
                        {
                            if (123 + i * 45 + j * 67 + n * 8 + m * 9 == 100)
                            {
                                //if (i==1||i == -1||j==1||j == -1||n==1||n == -1||n==1||m == -1)
                                //{

                                //}                                
                                Console.WriteLine("123+({0}*45)+({1}*67)+({2}*8)+({3}*9)=100", i, j, n, m);
                            }
                        }
                    }
                }
            }

 

 

迭代法练习:

//求阶乘(6的阶乘)
            int jc = 1;
            for (int i = 6; i >= 1; i--)
            {
                jc = i * jc;

            }
            Console.WriteLine("6的阶乘是:" + jc);



            //求年龄。(有6个小孩子排在一起,问第一个多大年龄,她说:比第二个小2岁,问第二个多大年龄,她说:比第三个小2岁,以此类推,问第六个多大年龄,她说:自己16岁,问第一个小孩子几岁?)

            int age = 16;
            for (int i = 5; i >= 1; i--)//i为第二个小孩岁数
            {
                age -= 2;
            }
            Console.WriteLine("第一个小孩的年龄是:" + age + "");




            //一张纸的厚度是:0.15mm,假设这张纸足够大可以无限次对折,问:折26次的高度是多少?
            double a = 0.00015;
            for (int i = 1; i <= 26; i++)
            {
                a *= 2;
            }
            Console.WriteLine("当纸折叠26次时,厚度为:" + a + "");


            //棋盘放粮食(请在第一个格子放1粒粮食,第二个格子放2粒,第三个格子放四粒,以此类推,
            //每个格子放的粮食都是前一个格子里粮食的2倍,直到放到第64个格子,请问第64个格子需要多少粮食?
            //假如1粒粮食重量0.02克,那么棋盘64个格子的粮食一共重多少千克?

            decimal sum = 0, num = 1;

            for (int i = 1; i <= 64; i++)
            {
                num = num * 2;
                sum = num + i;
            }

            Console.WriteLine("第64个格子需要粮食:{0}", sum);
            decimal w = (decimal)0.00002;
            decimal sw = w * sum;
            Console.WriteLine("棋盘所有64个格子 上面粮食总重:{0}", sw);


            //公园里有一只猴子和一堆桃子,猴子每天吃掉桃子数量的一半,
            //把剩下的一半数量中扔掉一个坏的,到了第七天,
            //猴子睁开眼发现只剩下一个桃子了,问公园原来有多少桃子?


            int count=1;
            for (int i = 6; i >= 1; i--)
            {
                count = (count + 1) * 2;
            }

            Console.WriteLine("原来桃子数:{0}",count);

 

C#编程—第五天--循环语句for

标签:

原文地址:http://www.cnblogs.com/ooip/p/4480498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!