zoukankan      html  css  js  c++  java
  • for循环的应用

    for循环的应用:迭代法,穷举法。

    一、迭代法:(有一定规律)

    每次循环都是从上次运算结果中获得数据,本次运算的结果都是要为下次运算做准备。

    例:
    1.100以内所有数的和。

    int sum = 0;
    for (int i = 1; i <= 100;i++)
    {

        sum = sum + i;
    }
    Console.WriteLine(sum);
    2.求阶乘。

    int jc = 1;
    for (int i=1;i<=5 ;i++ )
    {
        jc = jc * i;

    }
    Console.WriteLine(jc);
    3.求年龄:有6个小孩子排在一起,第一个比第二个小2岁,第二个比第三个小2岁,第三个比第四个小2岁,第六个16岁。求第一个多少岁?

    int age = 16;  //初始情况下,存的是第6个小孩子年龄,每次循环都会减2,分别代表第5,4,3,2,1个小孩子的年龄。
    for (int i=5;i>=1 ;i-- )
    {
        age = age - 2;
    }
    Console.WriteLine(age);
    4.折纸。

    double h = 0.00015;
    for (int i=1;i<=10 ;i++ )
    {
        h = h * 2;
    }
    Console.WriteLine(h);
    5.棋盘放粮食。

                decimal a = 1, b = 0;
                for (int i=1;i<=64 ;i++ )
                {
                    a = a * 2;
                    b = a + i;
                }
                Console.WriteLine("第64格应该放:"+b+"粒粮食");
                decimal weight单=(decimal)0.00002;
                decimal weight总 = weight单 * b;
                Console.WriteLine("棋盘粮食一共重"+weight总+"kg");

    6.猴子吃桃子。

    for (int i=6;i>=1 ;i-- )
    {
        count = (count + 1) * 2;
    }
    Console.WriteLine(count);
    7.落球问题:一个球从10米高度落下,每次弹起2/3的高度。问第五次弹起后的高度是多少?
    8.兔子小兔子的问题。一对新生兔,到三个月开始生一对小兔,以后每个月都会生一对小兔,小兔不断长大也会生小兔。假设兔子不死,每次只能生一对(公母),问第24个月末有多少只兔子?

    int tu1 = 1, tu2 = 1;   //tu1是倒数第一个月的兔子数,tu2是倒数第二个月的兔子数            

    int tu=0;  //要求的这个月的兔子数。

    for (int i = 3; i <= 24; i++)

     {                

          tu = tu1 + tu2;                

          tu2 = tu1;                

          tu1 = tu;                            

    }            

    Console.WriteLine(tu);

    ★int 是32的位的,有时计算的数太大会超出范围,运算结果会显示是0,这时换成double计算试试。

    二、穷举法:

    用循环把各种可能的情况都给走一遍,然后用if条件把满足要求的结果给筛选出来。

    1.找100以内的与7有关的数。

    for (int a=1;a<=100 ;a++ )
    {
    if(a%7==0||1%7==0||a/10==7)
    {
            Console.WriteLine("100以内与7有关的数是"+a);
    }
    2.有三种硬币若干:1分,2分,5分。要组合1毛5,有哪些组合方式?

                for (int a = 0; a <= 15; a++) 
                {
                    for (int b = 0; b <= 7; b++) 
                    {
                        for (int c = 0; c <= 3; c++) 
                        {
                            if (a * 1 + b * 2 + c * 5 == 15) 
                            {
                                Console.WriteLine("一分钱需要"+a+"个,二分钱需要"+b+"个,5分钱需要"+c+"");
                            }
                        }
                    }
                }

    3.买东西。小张过元旦发了100元的购物券,他要买香皂(5元),牙刷(2元),洗发水(20元)。要想把100元正好花完,如何买这三样东西?

                for (int a = 0; a <= 20;a++ )
                {
                    for (int b = 0; b <= 50; b++) 
                    {
                        for (int c = 0; c <= 5; c++) 
                        {
                            if (a * 5 + b * 2 + c * 20 == 100) 
                            {
                                Console.WriteLine(""+a+"块肥皂,买"+b+"个牙刷,买"+c+"支牙膏,共花费100元");
                            }
                        }
                    }
                }

    4.百鸡百钱。有100文钱,要买100只鸡回家。公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只。如何买?
    百马百石。有100石粮食,母匹大马驮2石,每匹中马驮1石,每两匹小马驹一起驮1石。要用100匹马驮完100石粮食,如何按排?

                for (int gj = 0; gj <= 50; gj++) 
                {
                    for (int mj = 0; mj <= 100; mj++) 
                    {
                        for (int xj = 0; xj <= 200; xj++) 
                        {
                            if (gj * 2 + mj * 1 + xj * 0.5 == 100&&gj+mj+xj==100) 
                            {
                                Console.WriteLine("买公鸡"+gj+"只,买母鸡"+mj+"只,买小鸡"+xj+"");
                            }
                        }
                    }
                }

    5.某侦察队接到一项紧急任务,要求在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++) //0不去,1去。
                {
                    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="+a+";B="+b+";C="+c+";D="+d+";E="+e+";F="+f);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

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

                for (int a = -1; a <= 1; a = a + 2)//-1代表减号,1代表加号
    
                {
                    for(int b=-1;b<=1;b+=2)
                    {
                        for(int c=-1;c<=1;c+=2)
                        {
                            for(int d=-1;d<=1;d+=2)
                            {
                                if(123+a*45+b*67+c*8+d*9 == 100 )
                                {
                                    Console.WriteLine("a=" + a + ";b=" + b + ";c=" + c + ";d=" + d);
                                }
                            }
                        }
                    }
                }
  • 相关阅读:
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    jquery各种滚动
    IE屏蔽鼠标右键、禁止复制粘贴等功能
    java高级---->Thread之BlockingQueue的使用
    java基础---->多线程之synchronized(六)
    java基础---->java中字符编码问题(一)
    java基础---->多线程之wait和notify(八)
    java基础---->多线程之ThreadLocal(七)
    java基础---->多线程之interrupt(九)
    java高级---->Thread之Exchanger的使用
  • 原文地址:https://www.cnblogs.com/691331894w/p/4185155.html
Copyright © 2011-2022 走看看