C# for循环

循环:反复执行某段代码。
循环四要素:初始条件,循环条件,循环体,状态改变。
for(初始条件;循环条件;状态改变)
{
 循环体
}


break ——中断循环,跳出循环
continue——停止本次循环,进入下次循环

for循环拥有两类:


穷举:
把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况。

迭代:
从初始情况按照规律不断求解中间情况,最终推导出结果。

for循环练习

           打印20遍你好

            for (int i = 1; i <= 10; i++)
            {   if (i == 6)
                {
                    continue;//结束本次循环,继续下次循环
                }
                Console.WriteLine("你好!");
            }

         输入一个整数,计算从1加到这个数的结果            

          Console.Write("请输入一个正整数:");             

           int a = int.Parse(Console.ReadLine());

           int sum = 0;//0加上任何数都不会变化             

           for (int i = 1; i <= a; i++)            

           {                

              sum += i;//sum=sum+i;

           }             

          Console.WriteLine(sum);

        输入一个正整数,求这个数的阶乘       

         Console.Write("请输入一个正整数:");             

         int a = int.Parse(Console.ReadLine());

         int sum = 1;            

         for (int i = 1; i <= a; i++)           

          {                 

              sum *= i;//sum=sum*i;  

          }             

         Console.WriteLine(sum);

       找出100以内的与7有关的数,打印出来。7的倍数,个位数是7,十位数是7

        int a = 0;//标记变量
        for (int i = 100; i >= 1; i--)
        {
             if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
             {
                 a++;
                 Console.WriteLine(i);
             }
         }
         Console.WriteLine("总共"+a);

        一个游戏,前20关是每一关自身的分数,21-30关每一关是10分,31-40关,每一关是20分,41-49关,每一关是30分,50关,是100分。输入你现在闯到的关卡数,求你现在拥有的分数
        两种做法:if嵌套for    for嵌套if

           方法一:

            Console.Write("请输入您现在所闯到的关卡数:");
            int a = int.Parse(Console.ReadLine());
            int sum = 0;
            if (a >= 1 && a <= 50)
            {
                if (a >= 1 && a <= 20)
                {
                    for (int i = 1; i <= a; i++)
                    {
                        sum += i;
                    }
                }
                else if (a >= 21 && a <= 30)
                {
                    for (int i = 1; i <= 20; i++)
                    {
                        sum += i;
                    }
                    for (int i = 21; i <= a; i++)
                    {
                        sum += 10;
                    }
                }
                else if (a >= 31 && a <= 40)
                {
                    for (int i = 1; i <= 20; i++)
                    {
                        sum += i;
                    }
                    for (int i = 21; i <= 30; i++)
                    {
                        sum += 10;
                    }
                    for (int i = 31; i <= a; i++)
                    {
                        sum += 20;
                    }
                }
                else if (a >= 41 && a <= 49)
                {
                    for (int i = 1; i <= 20; i++)
                    {
                        sum += i;
                    }
                    for (int i = 21; i <= 30; i++)
                    {
                        sum += 10;
                    }
                    for (int i = 31; i <= 40; i++)
                    {
                        sum += 20;
                    }
                    for (int i = 41; i <= a; i++)
                    {
                        sum += 30;
                    }
                }
                else
                {
                    for (int i = 1; i <= 20; i++)
                    {
                        sum += i;
                    }
                    for (int i = 21; i <= 30; i++)
                    {
                        sum += 10;
                    }
                    for (int i = 31; i <= 40; i++)
                    {
                        sum += 20;
                    }
                    for (int i = 41; i <= 49; i++)
                    {
                        sum += 30;
                    }
                    sum += 100;
                }
            }
            else
            {
                Console.WriteLine("输入有误!");
            }
            Console.WriteLine("总分为:" + sum);

            方法二:

            Console.Write("请输入现在闯到的关卡数:");
            int a = int.Parse(Console.ReadLine());
            int sum = 0;
            if (a >= 1 && a <= 50)
            {
                for (int i = 1; i <= a; i++)
                {
                    if (i >= 1 && i <= 20)
                    {
                        sum += i;
                    }
                    else if (i >= 21 && i <= 30)
                    {
                        sum += 10;
                    }
                    else if (i >= 31 && i <= 40)
                    {
                        sum += 20;
                    }
                    else if (i >= 41 && i <= 49)
                    {
                        sum += 30;
                    }
                    else
                    {
                        sum += 100;
                    }
                }
            }
            else
            {
                Console.WriteLine("输入有误!");

            Console.WriteLine(sum);

 for嵌套练习

         输入一个整数,求1!+2!+...+n!            

         Console.Write("请输入一个正整数:");             

          int a = int.Parse(Console.ReadLine());             

          int sum = 0;

          for (int i = 1; i <= a; i++)            

          {                

             int sum1 = 1;                 

             for (int j = 1; j <= i; j++)               

             {                    

                sum1 *= j;              

             }               

             sum += sum1;            

        }

        Console.WriteLine(sum);

            打印三角形
 

           int aa = 0;
            for (int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <=5; j++)
                {
                    aa++;
                    Console.Write("");
                }
                Console.WriteLine();
            }
            Console.WriteLine(aa);
            Console.ReadLine();

           打印直角在右下角的三角形
 

           for (int i = 1; i <= 5; i++)
            {
                for (int j = 4; j >= i; j--)
                {
                    Console.Write("  ");
                }
                for (int k = 1; k <= i; k++)
                {
                    Console.Write("");
                }
                    Console.WriteLine();
            }

    

           输入一个整数,求这个数的和、阶乘
 

           Console.Write("请输入一个正整数:");
            int a = int.Parse(Console.ReadLine());
            int sum = 1;
            for (int i = 1; i <= a; i++)
            {
                sum *= i;
            }
            Console.WriteLine(sum);

            99口诀表

            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(j + "*" + i + "=" + (i * j) + "	");
                }
                Console.WriteLine();
            }
            Console.Write("请输入一个正整数:");            

            int a = int.Parse(Console.ReadLine());

            for (int i = 1; i <= a; i++)            

            {                 

              for (int j = 1; j <= i; j++)                 

              {                     

                 Console.Write("");                 

               }                

               Console.WriteLine();            

            }

for穷举和迭代练习


            单位给发了一张150元购物卡,
            拿着到超市买三类洗化用品。
            洗发水15元,香皂2元,牙刷5元。
            求刚好花完150元,有多少种买法,
            每种买法都是各买几样?
            设洗发水x             150/15==10
            牙刷y                   150/5==30
            香皂z                   150/2==75
 

           int biao = 0;
            int sum = 0;
            for (int x = 0; x <= 10; x++)
            {
                for (int y = 0; y <= 30; y++)
                {
                    for (int z = 0; z <= 75; z++)
                    {
                        sum++;
                        if (x * 15 + y * 5 + z * 2 == 150)
                        {
                            biao++;
                            Console.WriteLine("这是第"+biao+"种买法:洗发水"+x+"瓶,牙刷"+y+"支,香皂"+z+"块。");
                        }
                    }
                }
            }
            Console.WriteLine("共有"+biao+"种买法!");
            Console.WriteLine(sum);

            纸张可以无限次对折,纸张厚度为0.07毫米。
            问多少次对折至少可以超过8848?

方法一:

            int a = 7;//884800000
            int i = 1;
            for (;; i++;)
            {
                a *= 2;//a=a*2;
                if (a >= 884800000)
                {
                    Console.WriteLine(i);
                    Console.WriteLine(a);
                    break;
                }
            }

方法二:

            while(true)
            {
                a *= 2;
                
                if (a >= 884800000)
                {
                    Console.WriteLine(i);
                    Console.WriteLine(a);
                    break;
                }
                i++;
            }

             兔子生兔子问题,一开始只有1对幼兔
            问第几个月的时候有多少对兔子,分别多少对
            小兔=上月幼兔
            成兔=上月小兔+上月成兔
            幼兔=本月成兔

            Console.Write("请输入第几个月的时候:");
            int yue = int.Parse(Console.ReadLine());
            if (yue > 0)
            {
                int cheng=0; int xiao=0; int you=0; int zong=0;
                for (int i = 1; i <= yue; i++)
                {
                    if (i == 1)
                    {
                        cheng = 0;

                        xiao = 0;
                        you = 1;
                        zong = 1;
                    }
                    else
                    {
                        cheng = xiao + cheng;
                        xiao = you;
                        you = cheng;
                        zong = cheng + xiao + you;
                    }
                }

                Console.WriteLine(""+yue+"个月时,总共有"+zong+"对兔子,成兔"+cheng+"对,小兔"+xiao+"对,幼兔"+you+"对。");
            }
            else
            {
                Console.WriteLine("输入有误!");
            }

            百鸡百钱:公鸡2文钱一只,
            母鸡1文钱一只,小鸡半文钱一只,
            总共只有100文钱,
            如何在凑够100只鸡的情况下刚好花完100文钱?

            int a = 0;
            for (int gong = 0; gong <= 50;gong++ )
            {
                for (int mu = 0; mu <= 100;mu++ )
                {
                    for (int xiao = 0; xiao <= 200;xiao++ )
                    {
                        if((gong*2+mu*1+xiao*0.5==100)&&mu+xiao+gong==100)

                        {
                            a++;

                           Console.WriteLine("" + a + "种买法" + "公鸡" + gong + "" + "母鸡" + mu + "" + "小鸡" + xiao+ "");

                         }                                             

                     }                

                 }            

             }

             Console.WriteLine(a);

     

原文地址:https://www.cnblogs.com/yy01/p/5269085.html