zoukankan      html  css  js  c++  java
  • for循环语句以及迭代法和穷举法

    循环语句:

    四要素:初始条件,循环条件,状态改变,循环体

    for(初始条件;循环条件;状态改变)
    {
    //循环体
    }

    案例1:打印等腰直角三角形和菱形

    左上三角

     1 static void Main(string[] args)
     2         {
     3             Console.WriteLine("请输入一个数:");
     4             int n = Convert.ToInt32(Console.ReadLine());
     5 
     6         //打印左上三角形
     7             for (int i = 1; i <= n; i++)
     8             {
     9                 for (int j = 1; j <= i; j++)
    10                 {
    11                     Console.Write("");
    12                 }
    13                 Console.WriteLine();
    14             }
    15 }

    运行结果:

    左下三角:

     1 static void Main(string[] args)
     2         {
     3             Console.WriteLine("请输入一个数:");
     4             int n = Convert.ToInt32(Console.ReadLine());
     5                for (int i = 1; i <= n; i++)
     6             {
     7                 for (int j = 1; j <= n + 1 - i; j++)
     8                 {
     9                     Console.Write("");
    10                 }
    11                 Console.WriteLine();
    12             }
    13 }

    运行结果:

    右上三角:

     1  static void Main(string[] args)
     2         {
     3             Console.WriteLine("请输入一个数:");
     4             int n = Convert.ToInt32(Console.ReadLine());
     5                  //打印右上三角
     6             for (int i = 1; i <= n; i++)
     7             {
     8                 for (int j = 1; j <= n - i; j++)
     9                 {
    10                     Console.Write("  ");
    11                 }
    12                 for (int k = 1; k <= i; k++)
    13                 {
    14                     Console.Write("");
    15                 }
    16                 Console.WriteLine();
    17             }
    18 }

    运行结果:

    右下三角:

     1  static void Main(string[] args)
     2         {
     3             Console.WriteLine("请输入一个数:");
     4             int n = Convert.ToInt32(Console.ReadLine());
     5                   for (int i = 1; i <= n; i++)
     6             {
     7                 for (int j = 1; j <= i - 1; j++)
     8                 {
     9                     Console.Write("  ");
    10                 }
    11                 for (int k = 1; k <= n + 1 - i; k++)
    12                 {
    13                     Console.Write("");
    14                 }
    15                 Console.WriteLine();
    16             }
    17 }

    运行结果:

    菱形:

     static void Main(string[] args)
            {
                Console.WriteLine("请输入一个数:");
                int n = Convert.ToInt32(Console.ReadLine());
                       //打印上半部分菱形
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= n - i; j++)
                    {
                        Console.Write("  ");
                    }
                    for (int k = 1; k <= 2 * i - 1; k++)
                    {
                        Console.Write("");
                    }
                    Console.WriteLine();
                }
                
                //打印下半部分菱形
                for (int i = 2; i <= n; i++)
                {
                    for (int j = 1; j <= i - 1; j++)
                    {
                        Console.Write("  ");
                    }
                    for (int k = 1; k <= 11 - 2 * i; k++)
                    {
                        Console.Write("");
                    }
                    Console.WriteLine();
                }
                
            }

    运行结果:

    break; 完全终止循环,退出循环。 吃到苍蝇
    continue; 中断本次循环,进入下次循环。 吃到沙子

    1.迭代法: - 有规律可寻

    //100以内所有数的和。

     1  static void Main(string[] args)
     2         {
     3              // 求100以内所有数的和
     4             //收公粮
     5             int sum = 0;
     6 
     7             for (int i = 1; i <= 100; i++)
     8             {
     9                 sum = sum + i;
    10             }
    11             Console.WriteLine(sum);
    12      }       

    //猴子吃桃子

    公园里有一只猴子,和一堆桃子,猴子每天吃完桃子总数的一半,在剩下一半数量中扔掉一个坏的。每天这样吃,到第七天,猴子睁开眼时,发现只剩下一个桃子了,问刚开始公园里有多少个桃子? 190

     1  public static void Main(string[] args)
     2         {
     3            //猴子吃桃子
     4             int taozi = 1;
     5             for (int i = 6; i >= 1; i--)
     6             {
     7                 taozi = (taozi + 1) * 2;
     8             }
     9 
    10             Console.WriteLine(taozi);
    11         }

    //国象棋盘放米

     1 public static void Main(string[] args)
     2         {
     3                  //国象放米
     4             double mi = 1;
     5             Console.Write(mi + "	");//第一行的米数
     6 
     7             for (int i = 2; i <= 64; i++)
     8             {
     9                 mi = mi * 2;
    10                 Console.Write(mi + "	");
    11             }
    12         }

    结果:

    //拆纸多少次就比珠峰高 8848米

    一张A4纸的厚度:0.088毫米 =0.0088厘米 = 0.00088分米=0.000088米

     1 public static void Main(string[] args)
     2         {
     3              double houdu = 0.000088;
     4 
     5             for (int i = 1; ; i++)
     6             {
     7                 houdu = houdu * 2;
     8                 Console.Write(houdu + "	");
     9                 if (houdu > 8848)
    10                 {
    11                     Console.WriteLine("对折了{0}次后就超过珠峰了", i);
    12                     break;
    13                 }
    14             }
    15        }

    运行结果:

    2.穷举法 :

    用循环,把所有可能的情况都走上一遍,然后使用if过滤出满足条件的情况来。

    //100以内所有与7有关的数。

     1  static void Main(string[] args)
     2         {
     3             #region ====求100以内与7有关的数====
     4 
     5             for (int i = 1; i <= 100; i++)
     6             {
     7                 if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
     8                 {
     9                     Console.Write(i + "	");
    10                 }
    11             }
    12            #endregion
    13 }

    //百鸡百钱
    公鸡2文钱,母鸡1文钱,小鸡半文钱。用100文钱,买100只鸡,每类鸡只少买1只,有哪几种组合?

     1  static void Main(string[] args)
     2         { 
     3         //百鸡百钱:公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性
     4             int sum = 0;
     5             for (int a = 1; a <=50; a++)
     6             {
     7                 for (int b =1; b <100; b++)
     8                 {
     9                     for (int c = 1; c <=100; c++)
    10                     {
    11                         if (a+b+c==100&&a*2+b*1+c*0.5==100)
    12                         {
    13                             sum++;
    14                             Console.WriteLine("公鸡{0}只,母鸡{1}只,小鸡{2}只",a,b,c);
    15                         }
    16                     }
    17                 }
    18             }
    19             Console.WriteLine("一共有{0}种可能性",sum);
    20         }

    123( )45( )67( )8(  )9=100,括号里填+或-使得等式两边相等。

     1  public static void Main(string[] args)
     2         {
     3 
     4             for (int a = -1; a <= 1; a = a + 2)
     5             {
     6                 for (int b = -1; b <= 1; b = b + 2)
     7                 {
     8                     for (int c = -1; c <= 1; c = c + 2)
     9                     {
    10                         for (int d = -1; d <= 1; d = d + 2)
    11                         {
    12                             if (123 + 45 * a + 67 * b + 8 * c + 9 * d == 100)
    13                             {
    14                                 Console.Write("{0},{1},{2},{3}", a, b, c, d);
    15                             }
    16                         }
    17                     }
    18                 }
    19             }
    20         }

    小张单位发100元的购物卡,小张要去超市买三种日常用品:牙刷(5元)、香皂(2元)、洗发水。(15元),购物卡不退现,小张又不想多花钱,如何购买刚好花完这100元的卡?

     1 static void Main(string[] args)
     2         {
     3            
     4              int count=0;
     5             for (int a = 0; a <=20; a++)
     6             {
     7                 for (int b = 0; b <=50; b++)
     8                 {
     9                     for (int c = 0; c <=6; c++)
    10                     {
    11 
    12                         if (a*5+b*2+c*15==100)
    13                         {
    14                             count++;
    15                             Console.WriteLine("牙刷{0}只,香皂{1}个,洗发水{2}瓶", a, b, c);
    16                         }
    17                         
    18                     }
    19                 }
    20             }
    21             Console.WriteLine("一共有{0}种可能性恰好花光100元",count);
    22         }

     //打印出所有的水仙花数,所谓的水仙花数就是一个三位数,其余各个数字的立方和等于它的本身,例如153是一个水仙花数,153=1∧3+5∧3+3∧3

     1 static void Main(string[] args)
     2         { 
     3            //打印出所有的水仙花数,所谓的水仙花数就是一个三位数,其余各个数字的立方和等于它的本身,例如153是一个水仙花数,153=1∧3+5∧3+3∧3
     4             for (int i = 111; i <=999; i++)
     5             {
     6                 int a = i / 100;//取出三位数的百位
     7                 int b = i / 10 % 10;//取出三位数的十位
     8                 int c = i % 10;//取出三位数的个位
     9 
    10                 if (a*a*a+b*b*b+c*c*c==i)
    11                 {
    12                     Console.WriteLine(i);
    13                 }
    14 
    15             }
    16 
    17         }

    运行结果:

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/kellybutterfly/p/5402455.html
Copyright © 2011-2022 走看看