题目链接
题目描述
给定三个整数 a
, b
, c
,请输出它们中的最大值和最小值,并严格按照指定格式输出。
输入描述:
在一行中输入三个用空格隔开的整数 a
, b
, c
。
输出描述: 输出两行:
- 第一行:
The maximum number is : X
(其中 X 是最大值) - 第二行:
The minimum number is : Y
(其中 Y 是最小值) 注意冒号前后都有空格。
解题思路
本题的核心是找到三个数中的最大值和最小值。
方法一:使用内置函数
大多数编程语言都提供了 max
和 min
函数,这是最直接、最简洁的方法。
max(a, b, c)
可以直接求出三个数中的最大值。min(a, b, c)
可以直接求出三个数中的最小值。- 对于只支持两个参数的
max/min
函数(如C++),可以通过嵌套调用实现:max(a, max(b, c))
和min(a, min(b, c))
。
方法二:手动比较
也可以通过一系列的 if
语句手动比较。
- 初始化
max_val = a
,min_val = a
。 - 比较
b
和max_val
,如果b
更大,则更新max_val = b
。 - 比较
c
和max_val
,如果c
更大,则更新max_val = c
。 - 对
min_val
做类似操作。 这种方法虽然代码稍长,但有助于理解比较的底层逻辑。
最后,严格按照题目要求的格式,包含固定的文本和空格,将结果输出。
代码
#include <iostream>
#include <algorithm> // 需要此头文件以使用 std::max 和 std::min
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
// 嵌套使用 std::max/min 找到三个数中的最值
int max_val = max(a, max(b, c));
int min_val = min(a, min(b, c));
// 严格按格式输出
cout << "The maximum number is : " << max_val << endl;
cout << "The minimum number is : " << min_val << endl;
return 0;
}
import java.util.Scanner;
import java.lang.Math; // Math 类包含 max 和 min 方法
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
// 嵌套使用 Math.max/min 找到三个数中的最值
int maxVal = Math.max(a, Math.max(b, c));
int minVal = Math.min(a, Math.min(b, c));
// 严格按格式输出
System.out.println("The maximum number is : " + maxVal);
System.out.println("The minimum number is : " + minVal);
}
}
# 读取输入
nums = list(map(int, input().split()))
# Python 的 max/min 函数可以直接作用于列表
max_val = max(nums)
min_val = min(nums)
# 严格按格式输出
print(f"The maximum number is : {max_val}")
print(f"The minimum number is : {min_val}")
算法及复杂度
- 算法:比较或使用内置函数。
- 时间复杂度:
- 因为比较的数字个数是固定的(3个)。
- 空间复杂度:
- 仅需常数空间存储变量。