注意: 这是用单元测试管理的
/// --Hello,World!--
/// 输出语句,没有什么好说的
#[test]
pub fn one_1(){
println!("Hello,World!");
}
/// --输出字符菱形--
/// 从零开始并且长度向下取整,所以一定是一半
/// 上半部分正常计算,下半部分反向计算
#[test]
pub fn one_2(){
let n = 5; // 菱形的对角线长度
let mid = n / 2; // 中间行的索引
// 输出上半部分(包括中间行)
for i in 0..=mid {
let spaces = mid - i; // 空格数
let stars = 2 * i + 1; // 星号数
// 打印空格和星号
println!("{}{}", " ".repeat(spaces), "*".repeat(stars));
}
// 输出下半部分
for i in (0..mid).rev() {
let spaces = mid - i;
let stars = 2 * i + 1;
// 打印空格和星号
println!("{}{}", " ".repeat(spaces), "*".repeat(stars));
}
}
/// --超级玛丽游戏--
/// 字符串字面值,可以识别换行符
#[test]
pub fn one_3(){
let str =
" ********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############";
println!("{}",str);
}
/// --A+B Problem--
/// 空格分割,闭包迭代
#[test]
pub fn one_4(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("读取输入失败");
// let mut nums = input.trim().split_whitespace().map(|x| x.parse::<i32>().unwrap());
//
// let a = nums.next().unwrap();
// let b = nums.next().unwrap();
// 命令行替换
let a = 3;
let b = 4;
println!("{}", a+b);
}
/// --字符三角形--
/// 读取一个字符,然后输出三角形
#[test]
pub fn one_5(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).unwrap();
// let ch = input.trim().chars().next().unwrap();
// 代替命令行
let ch = '#';
for i in 1..=3 {
let spaces = 3 - i;
let chars = 2 * i - 1;
println!("{}{}", " ".repeat(spaces), ch.to_string().repeat(chars));
}
}
/// --苹果问题--
/// 读取两个数字,然后输出乘积
#[test]
pub fn one_6(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("读取输入失败");
// let nums: Vec<i32> = input.trim().split_whitespace()
// .map(|x| x.parse().expect("解析失败"))
// .collect();
// 命令行替换
let nums = vec![3, 4];
let a = nums[0];
let b = nums[1];
println!("{}", a * b);
}
/// --字母转换--
/// 读取一个字符串,然后转换为大写字母
#[test]
pub fn one_7(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("读取输入失败");
// 命令行替换
let input = "abc".to_string();
println!("{}", input.trim().to_uppercase());
}
/// --数字反转--
/// 句号分割,然后反转输出
#[test]
pub fn one_8(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("读取输入失败");
// let parts: Vec<_> = input.trim().split('.').collect();
// 命令行替换
let parts = vec!["123", "4"];
let float = parts[0].chars().rev().collect::<String>();
println!("{}.{}", parts[1], float);
}
/// --再分肥宅水--
/// 两数相除
#[test]
pub fn one_9(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
// let parts: Vec<f64> =
// input.trim()
// .split_whitespace()
// .collect()
// .into_iter()
// .map(|x| x.parse().expect("解析失败"))
// .collect();
// 代替命令行
let parts = vec![500.0, 3_f64];
// 计算每名同学可以获得的饮料量
let drink_per_person = parts[0] / parts[1];
// 计算需要的杯子总数
let total_cups = (parts[1] * 2.0) as i32;
// 输出结果
println!("{:.3}\n{}", drink_per_person, total_cups);
}
/// --三角形面积--
/// 按公式
#[test]
pub fn one_10(){
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
//
// let nums: Vec<f64> =
// input
// .split_whitespace()
// .map(|s| s.parse().unwrap())
// .collect();
// 代替命令行
let nums = vec![3_f64, 4_f64, 5_f64];
let (a, b, c) = (nums[0], nums[1], nums[2]);
let p = (a + b + c) / 2.0;
let area = (p * (p - a) * (p - b) * (p - c)).sqrt();
println!("{:.1}", area);
}
/// --上学迟到--
/// 考虑是不是当天和就大不就小
#[test]
pub fn one_11(){
// 代替命令行
let number_list: Vec<i32> = vec![100, 99];
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
// let number_list: Vec<i32> = input.trim().split_whitespace()
// .map(|s| s.parse().expect("parse error"))
// .collect();
let mut need_minute = if number_list[0] % number_list[1] == 0 {
number_list[0] / number_list[1]
} else {
number_list[0] / number_list[1] + 1
};
need_minute += 10;
if need_minute > 480 {
need_minute -= 480;
let real_list = if need_minute % 60 == 0 {
vec![need_minute / 60, 0]
} else {
vec![need_minute / 60 + 1, need_minute % 60]
};
if real_list[1] == 0 {
println!("{:02}:{:02}", 23 - real_list[0] + 1, 0);
} else {
println!("{:02}:{:02}", 23 - real_list[0] + 1, 59 - real_list[1] + 1);
}
} else {
let real_list = if need_minute % 60 == 0 {
vec![need_minute / 60, 0]
} else {
vec![need_minute / 60 + 1, need_minute % 60]
};
if real_list[1] == 0 {
println!("{:02}:{:02}", 7 - real_list[0] + 1, 0);
} else {
println!("{:02}:{:02}", 7 - real_list[0] + 1, 59 - real_list[1] + 1);
}
}
}
/// --大象喝水--
/// 公式
#[test]
pub fn one_12(){
// 代替命令行
let nums:Vec<i32> = vec![23, 11];
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
//
// let nums: Vec<i32> = input.trim().split_whitespace()
// .map(|s| s.parse().expect("Parse error"))
// .collect();
let h = nums[0];
let r = nums[1];
// 计算每桶水的体积,单位是立方厘米
let pi = 3.14;
let volume_per_bucket = pi * (r as f64).powi(2) * h as f64;
// 计算需要的桶数
let total_volume_needed = 20000.0; // 20升 = 20000立方厘米
let buckets_needed = (total_volume_needed / volume_per_bucket).ceil() as i32;
// 输出结果
println!("{}", buckets_needed);
}
/// P1425 小鱼的游泳时间
/// 正常的时间计算
#[test]
pub fn one_13(){
// 代替命令行
let parts = vec![12, 50, 19, 10];
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
// let parts: Vec<i32> = input
// .split_whitespace()
// .map(|s| s.parse().unwrap())
// .collect();
let number_start_h = parts[0];
let number_start_m = parts[1];
let number_final_h = parts[2];
let number_final_m = parts[3];
let number_subtractive_h = if number_final_m >= number_start_m {
number_final_h - number_start_h
} else {
number_final_h - number_start_h - 1
};
let number_subtractive_m = if number_final_m >= number_start_m {
number_final_m - number_start_m
} else {
number_final_m + 60 - number_start_m
};
println!("{} {}", number_subtractive_h, number_subtractive_m);
}
/// P1421 小玉买文具
/// 就小不就大
#[test]
pub fn one_14(){
// 代替命令行
let values = vec![10, 3];
// // 读取输入
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("Failed to read line");
//
// // 分割并解析输入值
// let values: Vec<i32> = input
// .split_whitespace()
// .map(|s| s.parse().unwrap())
// .collect();
let number_yuan = values[0];
let number_jiao = values[1];
// 计算总金额(单位:角)
let number_total = number_yuan * 10 + number_jiao;
// 计算可购买数量
let number_target_price = 19;
let number_buy = number_total / number_target_price;
println!("{}", number_buy);
}
/// P3954 [NOIP 2017 普及组] 成绩
/// 公式
#[test]
pub fn one_15(){
// 代替命令行
let numbers = vec![100, 100, 80];
// 读取输入
// let mut input = String::new();
// std::io::stdin().read_line(&mut input).expect("读取输入失败");
//
// // 分割并解析输入值
// let numbers: Vec<i32> = input
// .split_whitespace()
// .map(|s| s.parse().expect("请输入有效的整数"))
// .collect();
// 计算加权和(使用显式截断转换)
let result =
(numbers[0] as f32 * 0.2) as i32
+ (numbers[1] as f32 * 0.3) as i32
+ (numbers[2] as f32 * 0.5) as i32;
println!("{}", result);
}
1168

被折叠的 条评论
为什么被折叠?



