处理若干行输入的题目

处理一行输入

C++的cin和C语言的scanf函数都以空格为分隔符,读取输入,每次读到空格或者换行符就会停止。因此,当我们要输出的一整行包含空格时,以上函数均无法得到正确的结果。

string s;
cin >> s;
cout << s;

输入: hello world
输出: hello

为了解决这个问题,我们可以使用getline函数,该函数会读取一行输入,直到遇到换行符为止。

string s;
getline(cin, s);
cout << s;

输入: hello world
输出: hello world

处理若干个输入

在我们遇到的部分题目中,我们需要处理若干个输入,例如:

共有若干个整数需要输入,你需要判断每个整数是否为质数,如果是质数,输出Yes,否则输出No。直到输入0位置,表示输入结束,且0不需要处理。
输入:
2
3
4
0
输出:
Yes
Yes
No

我们不知道有多少个整数需要输入,因此我们需要使用循环来处理。

int n;
while (cin >> n && n != 0) {
    // 处理n
}

在循环中,我们首先使用cin读取一个整数,然后判断这个整数是否为0,如果不是0,就处理这个整数。如果这个整数是0,就跳出循环。

完整代码:

bool isprime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) return false;
    }
    return true;
}

int main() {
    int n;
    while (cin >> n && n != 0) {
        if (isprime(n)) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }
}

处理若干行输入

同样的,当我们的输入包含若干行时,我们同样可以使用循环来处理。

最长的话:
Orange每次讲话都喋喋不休,他总是说很多很多的话,以至于你无法记住他说的每一句话,你能记住他说的最长一句话吗?
输入:
Hello World!
Orange is a fruit.
How r u?
waibibabu.
ohhhhhhhhhhhhhhhhhh
输出:
ohhhhhhhhhhhhhhhhhh

完整代码:

int main() {
    string s;
    string maxs;
    while (getline(cin, s)) {
        if (s.size() > maxs.size()) {
            maxs = s;
        }
    }
    cout << maxs;
}
posted @ 2024-10-14 08:32  橙之夏  阅读(78)  评论(0)    收藏  举报