一、基础练习题
第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}");
}