zoukankan      html  css  js  c++  java
  • 程序流程控制4

    多重循环控制

    介绍:

    1)将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的for循环称为外层循环,在里面的for循环称为内层循环。【建议一般使用2层,最多不要超过3层】

    2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的档次循环,开始下一次的循环。

    3)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次。


    应用实例:

    1)统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的评分均【学生的成绩从键盘输入】

    编程时两大绝招
    (1) 先易后难,即将一个复杂的问题分解成简单的问题。
    (2) 先死后活

    func main() {

      //分析实现思路
      //1.统计1个班的成绩情况,每个班有5名同学,求出改班的平均分
      //2.学生数就是5个 [先死后活]
      //3.声明一个sum 统计班级的总分

      //分析思路2
      //1.统计3个班的成绩情况,每个班有5名同学,求出每个班的平均分
      //2.j 表示第几个班级
      //3.定义一个变量存放总成绩

      //分析思路3
      //1.我们可以把代码做活
      //2.定义两个变量,表示班级的个数和班级的人数
      //代码实现

      var classNum int = 3
      var stuNum int = 5
      var totalsum float64 = 0.0
      for j := 1; j <= classNum; j++ {
        sum := 0.0
        for i := 1; i <=stuNum; i++ {
          var score float64
          fmt.Printf("请输入第%d班的第%d个学生的成绩 ", j, i)
          fmt.Scanln(&score)
          //累计班级总分
          sum += score
        }

        fmt.Printf("第%d班级的平均分是%v ", j, sum / float64(stuNum))
        //将各个班的总成绩累计到totalsum
        totalsum += sum
      }
      fmt.Printf("各个班级的总成绩%v 所有班级的平均分是%v ", totalsum, totalsum / float64(stuNum * classNum))
    }

    2)打印金字塔经典案例

    使用for循环完成下面的案例

    1)完成思路,可以先从矩形开始打
    2)代码实现


    分析编程思路:

    func main() {

      //编程思路
      //1.打印一个矩形
      /*
        ***
        ***
        ***
      */

      //2.打印半个金字塔
      /*
        *
        **
        ***
      */

      //3.打印整个金字塔
      /*
        * 1层 1 个* 规律: 2 * 层数 - 1 空格2 规律:总层数-当前层数
        *** 2层 3 个* 规律: 2 * 层数 - 1 空格1 规律:总层数-当前层数
        ***** 3层 5 个* 规律: 2 * 层数 - 1 空格0 规律:总层数-当前层数
      */

      //4 将层数做成一个变量
      //定义变量var totalLevel int

      //5 打印空心金字塔
      /*
        *
        * *
        *****
        分析:在我们给每行打印*号时,需要考虑是打印 * 还是打印 空格
        我们的分析的结果是,每层的第一个和最后一个是打印 *,其它就应该是空的,即打印空格
        我们还分析到一个例外情况,最后层(底层) 是全部打*。
      */

      var totalLevel int = 9
      //i 表示层数
      for i := 1; i <= totalLevel; i++ {
        //打印*前先打印空格
        for k := 1; k <= totalLevel - i; k++ {
          fmt.Print(" ")
        }
        //j 表示每层打印多少*
        for j := 1; j <= 2 * i - 1; j++ {
          if j == 1 || j == 2 * i -1 || i == totalLevel {
            fmt.Print("*")
          } else {
            fmt.Print(" ")
          }
        }
        fmt.Println()
      }
    }


    4)打印99乘法表

    func main() {

      num := 9
      for i := 1; i <= num; i++ {
        for j := 1; j <= i; j++ {
          fmt.Printf("%v * %v = %v ", j, i, j * i)
        }
        fmt.Println()
      }
    }

  • 相关阅读:
    数论 --- 斐波纳挈数列公式的变形
    计算几何 --- 凸包 模板
    计算几何 : 凸包学习笔记 --- Graham 扫描法
    iOS 给图片添加水印
    iOS 生成随机字符串 从指定字符串随机产生n个长度的新字符串
    pod install 出现 Unable to find a specification for `xxxxx` 解决方案
    UITextView 实现链接点击事件
    UILabel图文混排显示图片和文字
    YYLabel 自动布局 富文本文字点击事件
    解决Cornerstone不能上传.a文件的问题 Cornerstone不上传*.xcuserstate,*.xcbkptlist文件
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11343438.html
Copyright © 2011-2022 走看看