每日一题
题目
题目描述:
输入多个整数(一行),输出其中最大的整数。
输入格式
一行多个整数,用空格隔开。
输出格式
一个整数。
Java写法:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" "); // 读取一行并用空格分割
int max = Integer.MIN_VALUE; // 初始化最大值为最小整数
for (String s : str) {
int num = Integer.parseInt(s); // 将字符串转化为整数
max = Math.max(max, num); // 更新最大值
}
System.out.println(max); // 输出最大值
}
}
Tips:
br.readLine() ,怎么老写成nextLine啊
C写法:
#include <stdio.h>
#include <limits.h> // INT_MIN
int main() {
int max = INT_MIN; // 初始化最大值为最小整数
int num;
while (scanf("%d", &num) != EOF) {
if (num > max) {
max = num;
}
}
printf("%d", max); // 输出最大值
return 0;
}
Tips:
- EOF(End of File)是一个宏定义,表示文件结束标志,通常用于判断文件是否已经读到结尾。在 C 语言中,scanf 函数会返回读取的数据项个数,当读取到文件结尾时返回 EOF(-1),因此可以利用 scanf 函数的返回值来判断是否读取到文件结尾。在上述 C 代码中,while 循环的条件是 scanf(“%d”, &num) != EOF,即只要每次读取的数据项个数不是 EOF,就继续读取。
- scanf 函数默认以空白字符(包括空格、制表符、换行符等)作为分隔符,将输入流分解成多个输入项进行处理。当使用 %d 格式控制字符串时,scanf 函数会忽略输入流中的空白字符,并从第一个非空白字符开始读取一个整数。因此,当输入流中包含空格时,scanf 函数不会停止,而是跳过空格继续读取下一个非空白字符,直到读取完整个输入流或者遇到不能转换为整数的字符为止。
C++写法:
#include <iostream>
#include <climits> // INT_MIN
using namespace std;
int main() {
int max = INT_MIN; // 初始化最大值为最小整数
int num;
while (cin >> num) {
if (num > max) {
max = num;
}
}
cout << max; // 输出最大值
return 0;
}
Tips:
-
using namespace std; 是 C++ 中的一个命名空间声明语句。命名空间是 C++ 语言中用于避免命名冲突的一种机制,可以将一些名字放到特定的命名空间中,避免和其他作用域中的名字发生冲突。
C++ 标准库中的所有函数和类型都定义在 std 命名空间中,因此在使用标准库中的函数和类型时,需要在代码中加上 std:: 前缀。为了避免频繁使用 std:: 前缀,可以使用 using namespace std; 声明语句,表示使用 std 命名空间中的所有名字,从而可以直接使用标准库中的函数和类型。
需要注意的是,使用 using namespace std; 声明语句会将 std 命名空间中的所有名字引入到当前作用域中,可能会与其他命名空间或全局作用域中的名字发生冲突,因此在实际编程中应该避免滥用这个语句,最好使用需要使用的具体函数和类型的前缀。
-
cin 和 cout 分别是 C++ 标准库中的输入流和输出流对象,用于进行输入和输出操作。
cin >> num 表示从标准输入流(通常是键盘)读取一个整数,存储到变量 num 中。其中 >> 是 C++ 的输入运算符,用于将输入流中的数据输入到变量中。
cout << max 表示向标准输出流(通常是屏幕)输出一个变量 max 的值。其中 << 是 C++ 的输出运算符,用于将变量的值输出到输出流中。
在 C++ 中,<< 和 >> 运算符都是重载运算符,既可以用于输出和输入基本数据类型,也可以用于输出和输入自定义的对象类型。由于输入运算符的左侧是输入流,右侧是变量,而输出运算符的左侧是输出流,右侧是变量,因此看起来会有一些不同。
Python写法:
import sys
max_num = -sys.maxsize # 初始化最大值为最小整数
nums = input().split()
for num in nums:
num = int(num)
if num > max_num:
max_num = num
print(max_num) # 输出最大值
Tips:
-
import sys 是 Python 中的一个模块导入语句,用于导入标准库中的 sys 模块。sys 模块包含了一些与 Python 解释器和系统环境有关的函数和变量,例如 sys.argv 可以获取命令行参数,sys.exit() 可以退出 Python 程序等等。
-
sys.maxsize 是 Python 中 sys 模块中定义的一个变量,表示整数的最大值,其值是系统的架构相关的。在初始化最大值为最小整数时,可以将其设为 -sys.maxsize,这样可以保证最开始的最大值比任何一个输入值都要小,从而能够正确地更新最大值。
-
input().split() 是 Python 中的一种读取输入的方式,其中 input() 用于从标准输入读取一行字符串,split() 用于将字符串按照空格分割成一个字符串列表。默认情况下,split() 会以任意空格字符(包括空格、制表符和换行符)为分隔符进行分割,因此不需要在括号里面写 ’ '。
-
input().split() 返回的是一个字符串列表,其中每个字符串表示输入的一个整数。由于 Python 是一种弱类型语言,因此可以直接将这些字符串转换为整数,例如可以使用列表推导式将其转换为一个整数列表:
PHP写法:
<?php
$max = PHP_INT_MIN; // 初始化最大值为最小整数
$nums = explode(" ", trim(fgets(STDIN)));
foreach ($nums as $num) {
$num = intval($num);
if ($num > $max) {
$max = $num;
}
}
echo $max; // 输出最大值
?>
Tips:
- fgets(STDIN):从标准输入(即键盘)读取一行字符串,STDIN 是 PHP 中一个常量,表示标准输入流。
- trim():去掉字符串两端的空格和换行符。
- explode(" ", $str):将字符串 $str 按照空格分割成一个数组,其中 " " 表示分隔符,可以是任意字符串。
- $nums = explode(" ", trim(fgets(STDIN))):将从标准输入读取到的一行字符串按照空格分割成一个数组,并赋值给 $nums 变量。
因为 PHP 是一种弱类型语言,所以 $nums 的类型实际上是一个字符串数组,需要将其转换为整 数数组,可以使用 array_map() 函数和 intval() 函数.
打卡!