【百例RUST - 002】流程控制 基础语法练习题

一、基础练习题

第01题 正逆输出

题目

复制代码
正向输出 1-10 和 反向输出 1-10 的数据

for循环的代码

rust 复制代码
fn main(){
    println!(" ---------[for循环正向输出]----------- ");
    for num in 1..=10 {
        println!("{num}");
    }
    
    println!(" ---------[for循环反向输出]----------- ");
    for num in (1..=10).rev() {
        println!("{num}");
    }
}

while 循环的代码

rust 复制代码
fn main(){
    println!(" ---------[while循环正向输出]----------- ");
    let mut num1 = 1;
    while num1 <= 10 {
        println!("{num1}");
        num1 += 1;
    }
    
    println!(" ---------[while循环反向输出]----------- ");
    let mut num2 = 10;
    while num2 > 0 {
        println!("{num2}");
        num2 -= 1;
    }
}

loop 循环的代码

rust 复制代码
fn main(){
    println!(" ---------[loop循环正向输出]----------- ");
    let mut num1 = 1;
    loop {
        if num1 > 10{
            break;
        }
        println!("{num1}");
        num1 += 1;
    }
    
    println!(" ---------[loop循环反向输出]----------- ");
    let mut num2 = 10;
    loop {
        if num2 < 0 {
            break;
        }
        println!("{num2}");
        num2 -= 1;
    }
}

第02题 数据求和

题目

复制代码
计算 1+2+3+4+ ..... +99+100 的数据和

for 循环写法

rust 复制代码
fn main(){
    println!(" ---------[1+2+3+4+ ..... +99+100 的数据和]----------- ");
    // 1、定义求和变量
    let mut sum  = 0;
    // 2、循环获取范围内的数据
    for num in 1..=100 {
        sum += num;
    }
    // 3、输出结果
    println!("结果是 {sum}");
}

while 循环写法

rust 复制代码
fn main(){
    println!(" ---------[1+2+3+4+ ..... +99+100 的数据和]----------- ");
    // 1、定义求和变量
    let mut sum  = 0;
    // 2、循环获取范围内的数据
    let mut num = 1;
    while num <= 100 {
        sum += num;
        num += 1;
    }
    // 3、输出结果
    println!("结果是 {sum}");
}

loop 循环写法

rust 复制代码
fn main(){
    println!(" ---------[1+2+3+4+ ..... +99+100 的数据和]----------- ");
    // 1、定义求和变量
    let mut sum  = 0;
    // 2、循环获取范围内的数据
    let mut num = 1;
    loop {
        if num > 100 {
            break;
        }
        sum += num;
        num += 1;
    }
    // 3、输出结果
    println!("结果是 {sum}");
}

第03题 输出水仙花

题目

复制代码
输出所有的水仙花数,所谓的"水仙花数"指一个3位数,其各个数字的立方和等于该数本身。
例如,153是水仙花数,因为153=1X1X1+5X5X5+3X3X3

for 循环写法

rust 复制代码
fn main(){
    println!(" ---------[输出水仙花数]----------- ");
    // 循环范围在 100 - 999 的数据
    for num in 100..1000 {
        let bai = num/100;
        let shi = num/10%10;
        let ge = num%10;

        // 判断满足水仙花的条件
        if bai*bai*bai + shi*shi*shi + ge*ge*ge == num {
            println!("{num}");
        }
    }
}

while 循环写法

rust 复制代码
fn main(){
    println!(" ---------[输出水仙花数]----------- ");
    // 循环范围在 100 - 999 的数据
    let mut num = 100;
    while num < 1000 {
        // 计算百位、十位、个位 数字
        let bai = num/100%10;
        let shi = num/10%10;
        let ge = num%10;
        // 判断是水仙花数
        if bai * bai * bai + shi * shi * shi + ge * ge * ge == num {
            println!("{num}");
        }
        // 递增
        num += 1;
    }
}

loop 循环的写法

rust 复制代码
fn main(){
    println!(" ---------[输出水仙花数]----------- ");
    // 循环范围在 100 - 999 的数据
    let mut num = 100;
    loop {
        if num > 1000 {
            break;
        }
        // 计算百位、十位、个位数字
        let bai = num/100%10;
        let shi = num/10%10;
        let ge = num%10;
        // 判断是水仙花数
        if bai * bai * bai + shi * shi * shi + ge * ge * ge == num {
            println!("{num}");
        }
        // 递增
        num += 1;
    }
}

第04题 统计水仙花

题目

复制代码
统计所有的水仙花数的个数,所谓的"水仙花数"指一个3位数,其各个数字的立方和等于该数本身。
例如,153是水仙花数,因为153=1X1X1+5X5X5+3X3X3

for 循环写法

rust 复制代码
fn main(){
    println!(" ---------[统计水仙花数]----------- ");
    // 定义统计变量
    let mut count = 0;
    // 循环范围在 100 - 999 的数据
    for num in 100..1000 {
        // 获取到 百位、十位、个位
        let bai = num/100%10;
        let shi = num/10%10;
        let ge = num%10;
        // 判断水仙花
        if bai * bai * bai + shi * shi * shi + ge * ge * ge == num {
            count += 1;
        }
    }
    // 输出结果
    println!("{count}");
}

while 循环写法

rust 复制代码
fn main(){
    println!(" ---------[统计水仙花数]----------- ");
    // 定义统计变量
    let mut count = 0;
    // 循环范围在 100 - 999 的数据
    let mut num = 100;
    while num < 1000 {
        // 计算 百位、十位、个位
        let bai = num / 100 % 10;
        let shi = num / 10 % 10;
        let ge = num % 10;
        // 判断水仙花
        if bai * bai * bai + shi * shi * shi + ge * ge * ge == num {
            count += 1;
        }
        // 递增
        num += 1;
    }

    // 输出结果
    println!("{count}");
}

loop 循环写法

rust 复制代码
fn main(){
    println!(" ---------[统计水仙花数]----------- ");
    // 定义统计变量
    let mut count = 0;
    // 循环范围在 100 - 999 的数据
    let mut num = 100;
    loop{
        if num >= 1000 {
            break;
        }
        // 计算 百位、十位、个位
        let bai = num / 100 % 10;
        let shi = num / 10 % 10;
        let ge = num % 10;
        if bai * bai * bai + shi * shi * shi + ge * ge * ge == num {
            count += 1;
        }
        // 递增
        num += 1;
    }

    // 输出结果
    println!("{count}");
}

第05节 珠峰叠纸

题目

复制代码
珠峰叠纸问题:  
	有一张厚度为0.1mm的纸,假设它足够大,重复将其对折,问对折多少次之后,
	其厚度可达(再对折一次就超过)珠穆朗玛峰的高度?
	备注: 珠穆朗玛峰的高度是 8848.86 米

for 循环写法

rust 复制代码
fn main(){
    println!(" ---------[珠峰叠纸问题]----------- ");
    // 一张纸的厚度 0.1mm  珠穆朗玛峰的高度是 8848.86 米
    // 单位换算:   1米=1000mm  扩大比例尺 将两个计算单位全部转换为整数运算。
    // 假设纸张的厚度为1  那么珠穆朗玛峰的高度将是 88488600
    let mut parpaper : i32 = 1;
    // 定义次数
    let mut count = 0;
    for _num in 1 .. 200 {
        // 每次的对折, 厚度将会翻一倍 乘以2 
        parpaper *= 2;
        // 次数增加1次
        count +=1;
        // 如果厚度超过了 珠峰的高度
        if  parpaper > 88488600{
            break;
        }
    }
    // 输出结果
    println!("{count}");
}

while 循环写法

rust 复制代码
fn main(){
    println!(" ---------[珠峰叠纸问题]----------- ");
    // 一张纸的厚度 0.1mm  珠穆朗玛峰的高度是 8848.86 米
    // 单位换算:   1米=1000mm  扩大比例尺 将两个计算单位全部转换为整数运算。
    // 假设纸张的厚度为1  那么珠穆朗玛峰的高度将是 88488600
    let mut parpaper : i32 = 1;
    // 定义次数
    let mut count = 0;
    while parpaper < 88488600 {
        parpaper *= 2;
        count += 1;
    }

    // 输出结果
    println!("{count}");
}

loop 循环写法

rust 复制代码
fn main(){
    println!(" ---------[珠峰叠纸问题]----------- ");
    // 一张纸的厚度 0.1mm  珠穆朗玛峰的高度是 8848.86 米
    // 单位换算:   1米=1000mm  扩大比例尺 将两个计算单位全部转换为整数运算。
    // 假设纸张的厚度为1  那么珠穆朗玛峰的高度将是 88488600
    let mut parpaper : i32 = 1;
    // 定义次数
    let mut count = 0;
    loop {
        if parpaper > 88488600 {
            break;
        }
        parpaper *= 2;
        count += 1;
    }

    // 输出结果
    println!("{count}");
}
相关推荐
禹凕9 小时前
Python编程——进阶知识(多线程)
开发语言·爬虫·python
蜡笔小马9 小时前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
IOsetting9 小时前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
林开落L9 小时前
从零开始学习Protobuf(C++实战版)
开发语言·c++·学习·protobuffer·结构化数据序列化机制
牛奔9 小时前
Go 是如何做抢占式调度的?
开发语言·后端·golang
符哥20089 小时前
C++ 进阶知识点整理
java·开发语言·jvm
小猪咪piggy9 小时前
【Python】(4) 列表和元组
开发语言·python
難釋懷9 小时前
Lua脚本解决多条命令原子性问题
开发语言·lua
CoderCodingNo10 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
独好紫罗兰10 小时前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python