【百例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}");
}
相关推荐
doiito12 小时前
【Agent Harness】Gliding Horse 设计细节 -- 不跟风开发自己的AI Agent
架构·rust·agent
doiito15 小时前
【Agent Harness】Gliding Horse 核心设计理念,不跟风开发自己的AI Agent
ai·rust·架构设计·系统设计·ai agent
花褪残红青杏小1 天前
Rust图像处理第6节- 均值模糊 & 中值模糊:3×3 邻域的两种经典玩法
rust·webassembly·图形学
子兮曰1 天前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
星栈1 天前
写 Dioxus Demo 不难,难的是把它写成项目
前端·rust·前端框架
mCell1 天前
【锐评】桌面端技术营销:别拿跑分当工程判断
前端·rust·electron
武子康2 天前
调查研究-201 Rust 里的 dev build 和 release build:为什么同一份代码性能差这么多?
后端·架构·rust
doiito2 天前
【Agent Harness】Gliding Horse 的 L2 作战地图:让多 Agent 协作从“摸黑”变成“透明”
ai·rust·架构设计·系统设计·ai agent
星栈2 天前
我用 Rust + Dioxus 做了个全栈跨平台笔记应用:再把新建、编辑和交付补上
前端·rust·前端框架
独孤留白3 天前
从C到Rust:基本类型 C 的隐式不确定 vs Rust 的显式确定
rust