穹举,迭代,while循环。

时间:2022-01-28 07:18:26

所有循环  必要条件 :   初始条件(注意初始条件的位置)   循环条件   循环体   状态改变;

1.穷举

  将所有可能性全部全部走一遍,使用IF筛选出满足的情况

使用循环语句    for   或者  while 语句   do 。。。while   语句  中间嵌套  if 语句

举例

1,

穷举:将所有可能性全部走一遍,使用if筛选出满足的情况
            单位给发了一张150元购物卡,
            拿着到超市买三类洗化用品。
            洗发水15元,香皂2元,牙刷5元。
            求刚好花完150元,有多少种买法,
            每种买法都是各买几样?
            洗发水   x     0~10
            牙刷      y     0~30
            香皂      z     0~75
            int biao = 0;
            int zong = 0;
            for (int x = 0; x <= 10;x++ )                                 //for循环嵌套for循环, 最后用if 筛选出满足条件的情况;
            {
                for (int y = 0; y <= 30;y++ )
                {
                    for (int z = 0; z <= 75;z++ )
                    {
                        zong++;
                         if(x*15+y*5+z*2==150)
                         {
                             biao++;
                             Console.WriteLine("第{0}种买法:洗发水{1}瓶,牙刷{2}支,香皂{3}块。",biao,x,y,z);
                         }
                    }
                }
            }
            Console.WriteLine("总共有"+biao+"种买法。");
            Console.WriteLine("总共走了"+zong+"遍才找到了"+biao+"种符合的情况。");

2.迭代

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

举例:

   (1)
            第一天1分钱,第二天2分钱,第三天4分钱,以此类推
            40天
            问,总共收了多少钱?
            double sum = 0;
            double qian = 1;
            for (int i = 1; i <= 40;i++ )
            {
                if (i == 1)
                {
                    sum += qian;
                }
                else
                {
                    qian *= 2;
                    sum += qian;
                }
            }
            Console.WriteLine("总共接收了"+(sum/100)+"元。");

(2)

Console.Write("请输入月份:");

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

int a = 10, b = 10, c = 1;

int sum = a + b + c;

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

{                 if (i == 1)

{                     a = 0;

b = 0;

c = 1;

sum = a + b + c;

}

else

{

a = b + c;

b = c;

c = a;

sum = a + b + c;                 }

}

Console.WriteLine("在{0}个月后,共有成兔{1}对,小兔{2}对,幼兔{3}对,共{4}对", m, a, b, c, sum);

Console.ReadLine();

3.while循环
  格式1:先判断,在做  (初始条件)+while(表达式(循环条件)){循环体+状态改变}
  格式2:先做,在判断 (初始条件)+ do{循环体+状态改变}while(表达式(循环条件));

 

打印菱形

Console.Write("输入行数n:");
            int n = int.Parse(Console.ReadLine());
            int h1 = 1;//第1行赋值;
            while(h1<=n)
            {  int i=1;//第一列赋值
                while(i<=n-h1)
            {
               Console.Write("  ");
                    i++;
            }
                int j=1;
                while(j<=2*h1-1)
                {
                    Console.Write("★");
                    j++;
                }
           
                Console.Write("\n");
                h1++;
            }
            int h2 = 1;//下三角第一行赋值;
            while (h2 < n)
            {
                int k = 1;//第一列赋值
                while (k <= h2)
                {
                    Console.Write("  ");
                    k++;
                }
                int l = 1;
                while (l <= 2 * (n - h2) - 1)
                {
                    Console.Write("☆");
                    l++;
                }

Console.Write("\n");
                h2++;
            }
            Console.ReadLine();

3.随笔(最重要的是前后知识联系起来,无外乎是嵌套   循环 分支)

循环语句 1.与分支语句 相互嵌套   2. 循环语句嵌套循环语句   3.分支语句套分支  //   做题方法

4.写程序时 注意多加注释  方便以后再看懂,   5.分析问题时,用草纸亲自打个草稿!

6.    分析问题时注意寻找规律,充其量就是变量和自变量关系,最多就是多套几个循环或者分支语句,每套一个,总的自变量就可以视为少一个!

    1. 复杂的问题,可以拆分成几个来找规律,最后能合并则合并,例如:打印菱形;
    2. 找出特例:其他的可以用规律写出来,例如上面兔子的问题,第一个月为特例,则先列出来;
    3. 思考问题,灵活,未必顺着题目来,也可能逆着来思考

例如(

五个小朋友排成一队,问第一个多大了,       
            第一个说比第二个大两岁,问第二个多大了,
            第二个说比第三个大两岁。。。
             以此类推,问第5个小朋友,说自己3岁了。
            问第一个小朋友几岁了?
            int s=3 ;
            for (int i = 1; i <5;i++ )                        //把最后一个小朋友看作是第一个小朋友  逆着做题;
            {
                
                    s += 2;
                
            }
            Console.WriteLine(s);

也可能从中间向两端思考,还可能拆分成几个来思考(打印菱形)。