zoukankan      html  css  js  c++  java
  • C# 循环语句 for循环(嵌套 while 穷举 迭代)

    for循环的嵌套类似于if else

    事例:
    打印矩阵,外循环对应行,内循环对应列

    for (int k = 1; k <= 5; k++)
    {
    for (int i = 1; i <= 5; i++)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }


    打印左下角是直角的三角形
    for (int i = 1; i <= 5; i++)
    {
    for (int j = 1; j <= i; j++)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }

    打印左上角是直角的三角形
    for (int i = 1; i <= 5; i++)
    {
    for (int j = 5; j >= i; j--)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }


    打印右下角是直角的三角形
    for (int i = 1; i <= 5; i++)
    {
    for (int k = 1; k <= 5 - i; k++)
    {
    Console.Write(" ");
    }
    for (int j = 1; j <= i; j++)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }


    打印右上角是直角的三角形
    for (int i = 1; i <= 5; i++)
    {
    for (int k = 2; k <= i; k++)
    {
    Console.Write(" ");
    }
    for (int j = 5; j >= i; j--)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }


    请输入一个正整数,
    根据这个数打印一个两边长度为这个数的
    直角在右下角的三角形
    Console.Write("请输入一个正整数:");
    int a = int.Parse(Console.ReadLine());
    for (int i = 1; i <= a; i++)
    {
    for (int j = 1; j <= a - i; j++)
    {
    Console.Write(" ");
    }
    for (int k = 1; k <= i; k++)
    {
    Console.Write("■");
    }
    Console.WriteLine();
    }
    Console.ReadLine();

    输入一个整数,求1!+2!+...+n!
    Console.Write("请输入一个正整数:");
    int a = int.Parse(Console.ReadLine());
    int sum = 0;
    for (int i = 1; i <= a; i++)
    {
    int jie = 1;
    for (int j = 1; j <= i; j++)
    {
    jie *= j;
    }
    sum += jie;
    }
    Console.WriteLine(sum);


    99口诀表
    for (int i = 1; i <= 9; i++)
    {
    for (int j = 1; j <= i; j++)
    {
    Console.Write(j+"*"+i+"="+j*i+" ");
    }
    Console.WriteLine();
    }

    Console.ReadLine();

    while 循环

     

    其实是for循环的变形写法
    for(int i = 1; i<=5;i++)
    {
    循环体;
    }
    上面的for循环可以写成
    int i= 1;
    for(;i<=5;)
    {
    循环体;
    i++;
    }
    写成while就是以下样式
    int i= 1;
    while(表达式(i<=5))
    {
    循环体;
    状态改变(i++);
    }

    do
    {
    循环体;
    状态改变(i++);
    }while(表达式(i<=5))
    注意:do while是不管满不满足表达式,我都会先执行一遍。

    举例应用:

    折纸:0.07mm,对折多少次能够超过珠峰高度(8848m)
    int ci = 0;
    double height = 0.07;
    while (height < 8848000)
    {
    height *= 2;
    ci++;
    }

    while (1 == 1)
    {
    height *= 2;
    ci++;
    if (height >= 8848000)
    {
    break;
    }
    }
    Console.WriteLine(ci);
    Console.ReadLine();


    使用while循环做99口诀表
    int i = 1;

    while (i <= 9)
    {
    int j = 1;
    while (j <= i)
    {
    Console.Write(j+"*"+i+"="+j*i+" ");
    j++;
    }
    Console.WriteLine();
    i++;
    }
    Console.ReadLine();

     

     

    穷举

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

    举例应用:

    单位给发了一张150元购物卡,
    拿着到超市买三类洗化用品。
    洗发水15元,香皂2元,牙刷5元。
    求刚好花完150元,有多少种买法,每种买法都是各买几样?
    int sum = 0;
    int zong = 0;
    for (int x = 0; x <= 10; x++)
    {
    for (int y = 0; y <= 30; y++)
    {
    for (int z = 0; z <= 75; z++)
    {
    zong++;
    if (x * 15 + y * 5 + z * 2 == 150)
    {
    sum++;
    Console.WriteLine("第{0}种买法:洗发水{1}瓶,香皂{2}块,牙刷{3}支。",sum,x,z,y);
    }
    }
    }
    }
    Console.WriteLine("总共有"+sum+"种买法。");
    Console.WriteLine(zong);
    Console.ReadLine();

    百鸡百钱:公鸡2文,母鸡1文,小鸡半文钱
    int a=0;
    for (int g = 0; g <= 50; g++)
    {
    for (int m = 0; m <= 100; m++)
    {
    for (int x = 0; x <= 200; x++)
    {
    if (g + m + x == 100 && g * 2 + m + x * 0.5 == 100)
    {
    Console.WriteLine(g + "只公鸡" + m + "只母鸡" + x + "只小鸡");
    a++;
    }
    }
    }
    }
    Console.WriteLine(a);
    Console.ReadLine();

    迭代

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

    举例应用:

    纸张可以无限次对折,纸张厚度为0.07毫米。
    问多少次对折至少可以超过8848米?
    8848米=8848000
    double height = 0.07;
    int ci = 0;
    for (; ; )
    {
    height *= 2;
    ci++;
    Console.WriteLine(ci + "次,现在的高度是:" + height / 1000 + "米。");
    if (height >= 8848000)
    {
    break;//跳出整个循环
    }
    }
    Console.ReadLine();


    五个小朋友排成一队,问第一个多大了,
    第一个说比第二个大两岁,问第二个多大了,
    第二个说比第三个大两岁。。。以此类推,
    问第5个小朋友,说自己3岁了。问第一个小朋友几岁了?

    int m = 3;
    for (int i = 1; i <= 4; i++)
    {
    m += 2;
    }
    Console.WriteLine("第一个小朋友{0}岁了。",m);
    Console.ReadLine();


    大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,
    要用100匹马,驼100石粮食,该如何分配?
    for (int d=0;d<=100 ;d++ )//d为大马
    {
    for (int z=0;z<=100 ;z++ )//z为中马
    {
    for (int x=0;x<=100 ;x++ )//z为小马
    {
    if (d +z+x==100&&2*d+z+0.5*x==100)
    {
    Console.WriteLine("大马"+d+"匹,中马"+z+"匹,小马"+x+"匹");
    }
    }
    }
    }
    Console.ReadLine ();

     4.有1分钱,2分钱,5分钱的硬币,

    要组合出来1.5元钱,有几种组合方式,分别各多少个?
    int n = 0;
    for (int a = 0; a <= 150; a++)
    {
    for (int b = 0; b <= 75; b++)
    { for(int c=0;c<=30;c++)
    {
    if (a + 2 * b + 5 * c == 150)
    {
    Console.WriteLine("1分钱的"+a+"二分钱的"+b+"三分钱的"+c);
    n++; }
    }
    }
    }Console.WriteLine("组合方式有"+n);
    Console.ReadLine();

  • 相关阅读:
    鼠标效果
    全选与全不选
    正则表达式
    下拉菜单
    图片轮播
    弹出层
    间隔与延时
    JS基础
    引入
    样式表 文字
  • 原文地址:https://www.cnblogs.com/1711643472qq/p/5705416.html
Copyright © 2011-2022 走看看