面试题答案
一键面试实现思路
- 在Rust中,可以使用切片(
&[i32]
)来接收可变数量的参数。因为控制台程序一般通过命令行参数获取输入,这些参数会以字符串形式传递进来,需要先将其转换为整数类型。 - 遍历切片中的每个整数,将它们累加起来,最后返回累加的结果。
具体代码
fn sum_numbers(numbers: &[i32]) -> i32 {
let mut sum = 0;
for number in numbers {
sum += number;
}
sum
}
fn main() {
let args: Vec<String> = std::env::args().collect();
let mut numbers: Vec<i32> = Vec::new();
for arg in args.iter().skip(1) {
match arg.parse::<i32>() {
Ok(num) => numbers.push(num),
Err(_) => println!("Invalid number: {}", arg),
}
}
let result = sum_numbers(&numbers);
println!("The sum is: {}", result);
}
在上述代码中:
sum_numbers
函数接受一个整数切片&[i32]
作为参数,遍历切片并累加所有元素,返回累加结果。- 在
main
函数中,通过std::env::args()
获取命令行参数,跳过第一个参数(程序名本身),尝试将剩余参数解析为i32
类型。如果解析成功则加入numbers
向量,失败则打印错误信息。最后调用sum_numbers
函数并打印结果。