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) + "\t");
                }
                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);