华为仓颉语言入门(7):深入理解 do-while 循环及其应用

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

用法说明

do-while 表达式是一种控制循环的结构,它允许代码在每次循环之后进行条件判断。在这个表达式中,无论条件一开始是否满足,代码块都会被至少执行一次。

语法结构
cangjie 复制代码
do {
    // 循环体
} while (条件)

条件的判断发生在每次循环执行后。如果条件为 true,则循环继续;如果条件为 false,循环终止。因此,do-while 能确保代码块至少被执行一次。

示例:输出1到10的数字

通过 do-while 表达式,可以实现从1到10的数字输出,代码如下:

cangjie 复制代码
main() {
    var number = 0
    do {
        number++
        print("$(number)\t")
    } while (number < 10)
}

解释:

  • 初始化 number 为 0,之后每次循环 number 自增1并输出。
  • number 小于10时,继续循环,直到达到10停止。

输出结果:

复制代码
1    2    3    4    5    6    7    8    9    10

用 do-while 计算阶乘

除了输出数字,do-while 还可以用来计算阶乘。下面是使用 do-while 计算 1 到 10 的阶乘的示例:

cangjie 复制代码
main() {
    var number = 0
    var factorial = 1
    do {
        number++
        factorial *= number
        println("$(number)! = $(factorial)")
    } while (number < 10)
}

解释:

  • factorial 被初始化为1。
  • 每次循环中,number 递增,并将 factorial 乘以 number,输出当前阶乘。

输出结果:

复制代码
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800

使用 break 提前终止循环

在某些情况下,我们可能需要根据特定条件提前结束循环。此时可以使用 break 表达式,它允许立即跳出循环。

例如,下面的代码寻找一个10到100之间满足以下条件的最小数字:被3除余2且被5除余3。

cangjie 复制代码
main() {
    var counter = 10
    do {
        if ((counter % 3 == 2) && (counter % 5 == 3)) {
            break
        } else {
            counter++
        }
    } while (true)
    println("找到的数字:$(counter)")
}

解释:

  • counter = 10 开始,循环检查是否符合条件。
  • 满足条件时,使用 break 跳出循环,输出结果。

输出结果:

复制代码
找到的数字:23

使用 continue 跳过本次循环

在循环中,continue 表达式可以用来跳过当前的某次迭代,直接进入下一次循环。

例如,下面的代码只输出1到20之间的偶数。

cangjie 复制代码
main() {
    var number = 0
    do {
        number++
        if (number % 2 != 0) {
            continue // 跳过奇数
        }
        print("$(number)\t")
    } while (number < 20)
}

解释:

  • 每次循环时,number 递增,检查是否为偶数。
  • 如果 number 是奇数,跳过当前迭代,直接进入下一个循环。

输出结果:

复制代码
2    4    6    8    10    12    14    16    18    20

处理剩余的练习

练习 1 :使用 do-while 输出1到50之间所有的9的倍数,包含9。

cangjie 复制代码
main() {
    var number = 9
    do {
        if (number % 9 == 0) {
            print("$(number)\t")
        }
        number++
    } while (number <= 50)
}

输出结果:

复制代码
9    18    27    36    45

此代码会检查 number 是否是9的倍数,并在满足条件时输出对应的数字。

相关推荐
不会就选b4 小时前
MySQL之视图
数据库·mysql
>no problem<4 小时前
基于cola5.0的基础设施层的多数据库切换方案思路
数据库·spring boot·mybatisplus·cola5.0·数据库迁移适配
molong9314 小时前
鸿蒙基础之数据api全解析
华为·harmonyos
OceanBase数据库官方博客4 小时前
OceanBase 赋能央国企:从发电到用电的全链路业务承载
数据库·oceanbase
独特的螺狮粉5 小时前
篮球集训班器具管理系统 - 鸿蒙PC Electron框架完整技术实现指南
前端·javascript·华为·electron·前端框架·开源·鸿蒙
AI_零食5 小时前
番茄钟鸿蒙PC Electron框架完成:状态机、定时器管理与专注力工具设计
前端·javascript·华为·electron·开源·鸿蒙·鸿蒙系统
提子拌饭1335 小时前
逛三园游戏——基于鸿蒙PC Electron框架实现
前端·javascript·游戏·华为·electron·鸿蒙
李二。5 小时前
鸿蒙原生ArkTS-鸿蒙6.0新特性-动态模糊视频背景登录页
华为·音视频·harmonyos
心之伊始5 小时前
Java 后端接入大模型:从 Token、并发到推理成本的完整估算方法
java·spring boot·性能优化·大模型·llm
瀚高PG实验室6 小时前
pgsql-ogr-fdw
数据库·postgresql·瀚高数据库·highgo