【百例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}");
}
相关推荐
superman超哥2 小时前
Rust 发布 Crate 到 Crates.io:从本地到生态的完整旅程
开发语言·后端·rust·crate·crates.io
一路往蓝-Anbo2 小时前
C语言从句柄到对象 (二) —— 极致的封装:不透明指针与 SDK 级设计
c语言·开发语言·数据结构·stm32·单片机·嵌入式硬件
上天_去_做颗惺星 EVE_BLUE2 小时前
C++学习:学生成绩管理系统
c语言·开发语言·数据结构·c++·学习
雪域迷影2 小时前
使用Python库获取网页时报HTTP 403错误(禁止访问)的解决办法
开发语言·python·http·beautifulsoup·urllib
chao1898442 小时前
基于Qt的SSH/FTP远程文件管理与命令执行实现方案
开发语言·qt·ssh
凯子坚持 c2 小时前
Qt常用控件指南(1)
开发语言·数据库·qt
Flash.kkl2 小时前
Python基础语法
开发语言·python
十五年专注C++开发2 小时前
CMake进阶:find_package使用总结
开发语言·c++·cmake·跨平台编译
lxw18449125142 小时前
PHP凉了?岗位缩水50%+,开发者该何去何从?
开发语言·php