给定若干行输入,每一行由若干个整数组成,要求对每行的整数进行求和,并输出每行的和。输入数据的行数未知,当输入结束时,程序停止。
1 2 3
4 5 6 7
8 9
6
22
17
本题与单行不定组输入的区别在于,我们需要处理多行输入,而不仅仅是单行输入。在单行不定组输入的情况下,我们只需要一次性读取整行数据并处理。而在多行输入的场景中,输入行数是不定的,程序需要循环不断读取每一行数据并分别进行处理。这就要求我们不仅要处理每行的数据,还需要在输入结束时能够识别并终止读取。具体请看代码实现!
#include <iostream>
#include <sstream>
using namespace std;
int main() {
string line;
while (getline(cin, line)) { // 持续读取直到 EOF
stringstream ss(line);
long long num, sum = 0;
while (ss >> num) { // 逐个读取每一行的整数
sum += num;
}
cout << sum << endl; // 输出这一行的和
}
return 0;
}
getline(cin, line)
:使用 getline()
逐行读取输入,直到遇到文件结束符(EOF)。stringstream
:使用 stringstream
对每行进行解析,并逐个提取其中的整数。while (cin)
循环会持续读取每一行输入,直到遇到 EOF。Scanner.hasNextLine()
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) { // 持续读取直到 EOF
String line = sc.nextLine();
String[] numbers = line.split(" ");
long sum = 0;
for (String num : numbers) {
if (!num.isEmpty()) { // 防止处理空字符串
sum += Long.parseLong(num);
}
}
System.out.println(sum); // 输出这一行的和
}
}
}
sc.hasNextLine()
:在循环中判断是否还有下一行输入,直到输入结束。split(" ")
:使用 split()
按空格分割每行输入,得到字符串数组。for line in sys.stdin
import sys
for line in sys.stdin: # 持续读取直到 EOF
numbers = map(int, line.split()) # 将每行按空格分割,并转换为整数
print(sum(numbers)) # 输出该行的和
sys.stdin
:使用 sys.stdin
来持续读取标准输入,直到 EOF。split()
:按空格分割输入行,并使用 map(int, ...)
将分割出的字符串转换为整数。sum()
:对分割出的整数列表进行求和。bufio.Scanner
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin) // 创建读取器
for scanner.Scan() { // 持续读取直到 EOF
line := scanner.Text()
nums := strings.Fields(line) // 按空格分割
sum := 0
for _, num := range nums {
n, _ := strconv.Atoi(num) // 将字符串转换为整数
sum += n
}
fmt.Println(sum) // 输出和
}
}
scanner.Scan()
:使用 bufio.Scanner
持续读取每一行输入,直到遇到 EOF。strings.Fields()
:按空格分割每行输入,返回字符串数组。strconv.Atoi()
:将字符串数组转换为整数并进行求和。EOF 处理:
Ctrl+D
在 Linux/Mac 或 Ctrl+Z
在 Windows 来表示结束)。while(getline)
,Java 的 hasNextLine()
,Python 的 sys.stdin
,以及 Go 的 bufio.Scanner()
。多行输入处理:
字符串分割与整数转换:
这个题目的重点是处理不定组的输入,使用合适的方法读取直到输入结束,并对每行进行解析和处理。通过这个题目可以熟练掌握各语言中处理多行不定输入的技巧。
本题属于以下题库,请选择所需题库进行购买