處理若干行輸出的題目

橙之夏發表於2024-10-14

處理一行輸入

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;
}

相關文章