JavaScript篇.day03-循环结构(while, for)

news2025/1/20 3:36:48

目录

1.循环结构

2.例题

(1)奇数乘积(while/do-while)

(2)水仙花数(while)

(3)最大公约数(for)

(4)最小公倍数(for)

(5)打印星星(for)

(6)乘法表(for)


1.循环结构

  • 循环结构在程序中可执行多次
  • 循环结构有while循环, do-while循环, for循环
名称执行顺序循环执行次数应用场景
while先判断,再执行执行0次或多次

常用于次数不确定的情况

do-while先执行,再判断至少执行1次(1次或多次)

常用于次数不确定的情况

for先判断,再执行执行0次或多次

常用于次数确定的情况

    // 循环结构   在程序中执行多次  
    
    // while循环    先判断,再执行
    /* while(判断条件){
      语句块
    } */

    // do...while   先执行,再判断
        /* do{

        }while(条件) */

    //  for循环
  /*  for( 定义循环变量① ;  条件判断② ;  更新循环变量④){
        重复执行的代码③
      } 
  */

    

 /* 循环区别
      while:    先判断,再执行  循环语句执行次数为0次或多次               常用于次数不确定的情况
      do-while: 先执行,后判断  循环语句执行次数为1次或多次(至少执行1次)  常用于次数不确定的情况
      for:      先判断,再执行  循环语句执行次数为0次或多次               常用于次数确定的情况
                     
  */

2.例题

(1)奇数乘积(while/do-while)

      // 1*3*5*...*11结果
      var sum = 1   //保存乘积
      var i  =  1   //保存变量
      while(i < 12){
        sum *= i
        i += 2
      }
      console.log('11以内奇数乘积为: ' + sum)


      var num = 1
      var j = 11
      while(j > 0){
        num *= j
        j -= 2
      }
      console.log('11以内奇数乘积为: ' + num)



      var n = 1
      var k = 1
      do{
        n *= k
        k += 2
      }while(k < 12)
      console.log('11以内奇数乘积为: ' + n)

(2)水仙花数(while)

      // 1000以内水仙花数
      // 算法: 1) 将每个数,每一位上的数字取出
      //       2) 计算每一位上的立方之和, 等于本身,则输出

      var i = 100
      var num = 0
      while (i >= 100 && i < 1000) {
        // 个位
        var oNum =i % 10
        // 十位
        var tNum = parseInt((i/ 10) % 10)
        // 百位
        var hNum = parseInt(i / 100)
        var num = oNum * oNum * oNum + tNum * tNum * tNum + hNum * hNum * hNum
        if (num === i) {
          console.log(i)
        }
        i++
      }

      // 153  370  371  407

(3)最大公约数(for)

    // 求两个数的最大公约数

    // 两个变量保存两个数
    var num1 = prompt('请输入第一个数') - 0
    var num2 = prompt('请输入第二个数') - 0
    // 最大公约数 <= min(num1, num2)
    // 假设最大公约数等于 num1 和 num2中较小的一个 ,e.g: num1小
    var res = num1 
    if(num1 > num2){
      res = num2
    }
    for(var i = res; i > 0; i--){
      if(num1 % i == 0 && num2 % i == 0){
        //第一次找到的i, 就是最大的公约数
        console.log('最大公约数: ' + i)
        break //终止循环
      }
    }

(4)最小公倍数(for)

 // 求两个数的最小公倍数 

    // 两个变量保存两个数
    var num1 = prompt('请输入第一个数') - 0
    var num2 = prompt('请输入第二个数') - 0
    // 假设其中较大的数是num1
    var res = num1
    if(num1 < num2){
      res = num2
    }
    // 最小公倍数的范围一定在 较大的数 和 两数乘积之间
    for(var i = res; i <= num1 * num2; i++){
      if(i % num1 == 0 && i % num2 == 0){
        //第一次找到的i, 就是最小的公倍数
        console.log(num1 + '和' +num2 +'的最小公倍数: ' + i)
        break //终止循环
      }
    }

(5)打印星星(for)

      //打印 *
      /* 
            1行: * 
            2行: * * 
            3行: * * * 
            4行: * * * * 
            5行: * * * * * 
            6行: * * * * * *

      */
    for( var i = 0; i <= 5; i++){
      var str = ""   //用于拼接
      for(var j = 0; j <= i; j++){
        str += "* "
      }
      console.log(j + "行: " + str)
    }  

      // 打印金字塔
      /*  
    1行:      * 
    2行:     * * 
    3行:    * * * 
    4行:   * * * * 
    5行:  * * * * * 
    6行: * * * * * *  
  */
    for( var i = 0; i <= 5; i++){
      var str = ""   //用于拼接5
      // 先打印空格
      for(var k = 0; k < 5-i; k++){
        str += " "
      }
      for(var j = 0; j <= i; j++){
        str += "* "
      }
      console.log(j + "行: " + str)
    }
 

      /* 打印
                      *
                    * * *
                  * * * * *
                * * * * * * *
                  * * * * *
                    * * *
                      *
       */
      for (var i = 1; i < 5; i++) {
        var str = '' //用于拼接
        // 先打印空格
        // for (var k = 7 - 2 * i; k >= 0; k--) {
        //   str += ' '
        // }
        for(var k = 1; k <= 8 - 2 * i; k++){
          str += " "
        }
        for (var j = 1; j <= 2 * i - 1; j++) {
          str += '* '
        }
        console.log(i + '行: ' + str)
      }
      for (var m = 3; m > 0; m--) {
        var str = ""   //用于拼接
        var num = 8 - m   // 第几行
         // 先打印空格
        for(var z = 1; z <= 8 - 2 * m; z++){
          str += " "
        }
        for(var n = 1; n <= 2 * m - 1; n++){
          str += "* "
        }
        console.log( num +  "行: " + str)
      }
     



      // 案例: 打印倒三角
        /* 
              *****
              ****
              ***
              **
              *
        */

      var num = prompt("请输入打印几行: ")
      var  str = '';
      for(var i = 1; i <= num ; i++){ //外层循环打印行
      	for(var j = i; j <= num; j++){  //内层循环打印个数不一样 j=i
      		str = str + '*';
      	}
      	str = str + "\n";
      }
      console.log(str);

(6)乘法表(for)

    // 乘法表(正向)

    for(var i = 1; i < 10; i++){ //行
      var str = " "
      for(var j = 1; j <= i; j++){
        str += i + " * " + j + " = " + i * j + "    "
      }
      console.log(str )
    }

    console.log('------------------------------------------------------------------------------------------------------------------------------------------------------------')


      /*  结果: 
          1 * 1 = 1    
          2 * 1 = 2    2 * 2 = 4    
          3 * 1 = 3    3 * 2 = 6     3 * 3 = 9    
          4 * 1 = 4    4 * 2 = 8     4 * 3 = 12    4 * 4 = 16    
          5 * 1 = 5    5 * 2 = 10    5 * 3 = 15    5 * 4 = 20    5 * 5 = 25    
          6 * 1 = 6    6 * 2 = 12    6 * 3 = 18    6 * 4 = 24    6 * 5 = 30    6 * 6 = 36    
          7 * 1 = 7    7 * 2 = 14    7 * 3 = 21    7 * 4 = 28    7 * 5 = 35    7 * 6 = 42    7 * 7 = 49    
          8 * 1 = 8    8 * 2 = 16    8 * 3 = 24    8 * 4 = 32    8 * 5 = 40    8 * 6 = 48    8 * 7 = 56    8 * 8 = 64    
          9 * 1 = 9    9 * 2 = 18    9 * 3 = 27    9 * 4 = 36    9 * 5 = 45    9 * 6 = 54    9 * 7 = 63    9 * 8 = 72    9 * 9 = 81 


      */
        

     
    //  乘法表(倒向)
    for(var i = 9; i > 0; i--){
      var str = ''
      // 打印空格
      for(var k = 0 ; k < 9 - i; k++){
        str += "              "
      }
      for(var j = 1; j <= i; j++){
        var num = i * j
        if( num < 10){
          num = ' ' + num
        }
        str += i + " * " + j + " = " + num + "    "
      }
      console.log(str)
    }

    console.log('------------------------------------------------------------------------------------------------------------------------------------------------------------')



    // 乘法表
    for(i = 1; i < 10; i++){  //行
      var str = ''
      for(var k = 0 ; k < 9 - i; k++){
        str += "              "
      }
      for(var j = 1; j <= i; j++){
        var num = i * j
        if( num < 10){
          num = ' ' + num
        }
        str += i + " * " + j + " = " + num + "    "
      }
      console.log(str)
    }

 PreviousNotes:

https://mp.csdn.net/mp_blog/creation/editor/125005868

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wireshark练习抓取网络数据包用C编程完成modbus协议,从云端服务器读取温湿度数据。

文章目录前言一、疯狂聊天室1、配置网络2、创建房间3、互发消息二、wireshark抓取网络数据包1.找到对应的包2、分析抓取包中的信息三、Modbus协议概述1、Modbus主/从协议原理2、通用Modbus帧结构---协议数据单元(PDU)3、两种Modbus串行传输模式4、ModbusTCP通信结构四、C编程完…

零基础自学网络安全,如何3个月快速入门?

说到自学网络安全这一块&#xff0c;我来给大家分享一下我的经验。 一、了解相关网站 在入这行之前&#xff0c;我是先泡了一段时间网络安全相关的论坛&#xff0c;了解行业的信息&#xff0c;也可以确认自己是否真的想做这一行&#xff0c;毕竟这一行看起来很炫酷&#xff0…

Python编程 内置文件中常用方法

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.函数 &#xff08;1&#xff09;range() &#xff08;2&#xff09;zi…

做自动化测试3年,薪资为何会被应届生倒挂?

各位职场人都听说过薪资倒挂这词儿吧&#xff0c;这个情况在行业内早就不是什么稀罕事了&#xff0c;我有一个认识的&#xff0c;作为公司3年工龄的软件测试老员工&#xff0c;技术过关&#xff0c;能够独立工作&#xff0c;并且思考优化方向&#xff0c;我不吹牛的说&#xff…

【STL学习之路】vector的使用

文章目录vector介绍vector使用一、构造函数二、迭代器三、vector增删查改关于STL中参数的分析&#xff08;以push_back为例&#xff09;sort算法和仿函数使用vector介绍 vector就是顺序表的封装&#xff0c;是一个模板类&#xff0c;如上图所示。为方便vector里可以存任何数据类…

ChatGPT 免账号使用

一.ChatGPT 简介 ChatGPT是人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具&#xff0c;使用了Transformer神经网络架构&#xff0c;也是GPT-3.5架构&#xff0c;这是一种用于处理序列数据的模型&#xff0c;拥有语言理解和文本生成能力&#xff0c;尤…

搭建资金运营体系提高企业的运营能力

资金运营体系是以项目资金流管理为核心&#xff0c;在项目预核算体系基础上的深度化&#xff0c;是丰富和完善全面预算管理的重要内容。资金运营体系建设嵌入到业务流程和项目实施过程&#xff0c;将资金使用成本贯穿于项目实施各个环节。 一、资金管控总体思路 1、资金运营的…

数据可视化:春节临近,拥堵模式开启,你买好回家的车票了吗

哈喽&#xff0c;大家好&#xff0c;春节将近&#xff0c;想必大家也开始准备回家过年的事情了&#xff0c;春运即将开始&#xff0c;祝愿大家都能买到回家的车票。 想必大家对春运都不陌生&#xff0c;随着春节临近&#xff0c;全国各地也都先后开启了拥堵模式&#xff0c;下…

unity打android studio项目包运行时报错

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 打开Cmd 进入打包的项目&#xff0c;如下 输入gradlew --warning-mode all 说的是在Build.gradle(project)的RepositoryHandler.jcenter()方法已弃用 改成mavenCentral()即可 …

【OpenCV-Python】教程:8-3 高动态范围 HDR

OpenCV Python HDR 【目标】 学习如何从曝光序列生成和显示HDR图像。使用曝光融合来合并曝光序列。 【理论】 高动态范围成像(HDRI或HDR)是一种用于成像和摄影的技术&#xff0c;用于再现比标准数字成像或摄影技术更大的动态范围的光度。虽然人眼可以适应广泛的光照条件&am…

软考中级软件设计师和系统集成项目管理工程师哪个更好考?

软件设计师&#xff1a; 计算机相关基础知识&#xff0c;常用数据结构和常用算法&#xff0c;C程序设计语言&#xff0c;以及C、Java中的一种程序设计语言&#xff0c;软件工程、软件过程改进和软件开发项目管理的基础知识&#xff0c;软件设计的方法和技术。 系统集成项目管…

【设计模式】软件开发原则

开闭原则&#xff08;OCP&#xff09; 定义&#xff1a;一个软件实体应当对扩展开放&#xff0c;对修改关闭。也就是说在设计一个模块的时候&#xff0c;应当使这个模块可以在不被修改的前提下被扩展&#xff0c;即使现在不修改源代码的情况下改变这个模块的行为。 意思&#x…

(包含源代码)2022年全国大学生数学建模竞赛E题目-小批量物料生产安排详解+思路+Python代码时序预测模型-补完

目录 前言 赛题分析 1.问题一 问题分析 物料频率 代码详细操作&#xff1a; 出现频次 需求总数 趋势标量 方法 平均每天需求额度 整合代码 熵权法 详细介绍&#xff1a; 二、使用步骤 2.计算指标信息熵 3.熵权法相关代码 得到权重&#xff1a; 只希望各位以…

决策树-sklearn

决策树 1.概述 1.1 决策树是如何工作 决策树能够从一系列有特征和标签的数据中总结出决策规则&#xff0c;并且使用树状图的结构来表现&#xff0c;从而达到解决回归和分类问题。通俗的说&#xff0c;就是我们只需要问一系列问题就可以对数据进行分类。 核心要解决的问题&am…

20221226编译Toybrick的TB-RK3588X开发板的Android12系统3

20221226编译Toybrick的TB-RK3588X开发板的Android12系统3 2022/12/26 18:27 编译指令&#xff1a; 1、cat android12-rk3588.tar.gz.* >android12-rk3588.tar.gz 2、tar -zxvf android12-rk3588.tar.gz,解压缩后生成android12-rk3588-new目录 3、android12-rk3588-new 4、…

CSS篇.day04-单位,流式布局,弹性布局(flex),网格布局,渐变,变形与过渡

目录 1. 单位 2.流式布局 3.弹性布局(flex) 4.网格布局 5.渐变 6.变形与过渡 1. 单位 px: 绝对单位 像素em: 相对单位 基准点为父节点字体大小 若自身定义了font-size按自身来计算(一般浏览器默认16px)rem: 相对单位 相对根节点html的字体大小, css3新增属性, 根元…

【Python百日进阶-数据分析】Day139 - plotly甘特图:plotly.figure_factory.create_gantt()

文章目录一、语法二、参数三、返回值四、实例4.1 普通ff甘特图4.2 将任务组合在一起4.3 按数值变量着色4.4 create_gantt4.5具有数字条目的按列索引4.6 具有字符串条目的按列索引4.7 使用颜色字典4.8一、语法 已弃用&#xff0c;请用plotly.express.timeline()代替。 plotly.…

LeetCode88. 合并两个有序数组

题目 给你两个按非递减顺序排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按非递减顺序排列。 注意&#xff1a;最终&#xff0c;合并后数组不…

统一观测|如何使用 Prometheus 监控 Windows

作者&#xff1a; 颍川 引言 微软 Windows 是当前主流操作系统之一&#xff0c;在桌面和服务端均有较大市场份额。 对于 Linux 操作系统&#xff0c;Prometheus 可以通过 Node Exporter 来进行基础资源&#xff08;CPU、内存、磁盘、网络等&#xff09;监控&#xff0c;类似…

吴恩达的2022年终盘点:生成式AI、ViT、大模型

昨日&#xff0c;**吴恩达在圣诞节的《The Batch》特刊上发布了一年一度的年终盘点。**在过去的一年&#xff0c;生成式AI迎来爆发式增长&#xff0c;由人工智能生成的图片在社交平台疯狂传播&#xff0c;引发大量争议的同时也推动了投资&#xff1b;视觉 Transformer(ViT) 的工…