牛客網筆試C++輸入輸出


函數相關知識

  • cin將數據存放到temp里面,並且進行好了類型轉換,也就是說如果temp是int,那么輸入的數據就會轉化成int,如果是string類型,那么就將輸入的數據轉換成string類型,然后存入到temp里面:

    • cin>>輸入的數據不包含空格和回車,空格和回車會存入到cin的緩沖區中

    • 如果想拿到輸入的空格和回車,通過cin.get()獲得

    • cin讀取的每個數據以空格和回車分隔

    • cin.get()則是讀取每個字符/數,包括空格和回車

  • while(cin >> value)

    • 在while循環中,cin只有在遇到文件結束符(end-of-file),或遇到一個無效輸入時(例如輸入的值不是一個整數),cin的狀態會變為無效退出循環。

    • 從鍵盤輸入文件結束符(end-of-file):

      • 在Windows系統中,輸入文件結束符的方法是按Ctrl+Z,然后按Enter或Return鍵。

      • 在Unix系統中,包括在Mac OS X系統中,文件結束符輸入Ctrl+D

輸入數字

1 輸入包括兩個正整數a,b,輸入數據包括多組

int main() {
    int a, b;
    while(cin >> a >> b) {
        cout << a+b << endl;
    }
    return 0;
}

2 先輸入組數n,再輸入每組數據a和b

int main(){
    int n, a, b;
    cin >> n;
    for(int i = 0; i < n; ++i) {
        cin >> a >> b;
        cout << a + b << endl;
    }
    return 0;
}

3 輸入包括兩個正整數a,b,輸入數據包括多組,如果輸入為0則結束輸入

int main(){
    int a, b;
    while(cin >> a >> b){
        if(a == 0 && b == 0) break;
        cout << a + b << endl;
    }
    return 0;
}

4 輸入多組數據,每組第一個數為該組數據個數n,n為0時結束輸入

// 方式1
int main(){
    int n;
    while(cin >> n&&n>0){
        int sum=0, num;
        for(int i=0;i<n;i++){
            cin >> num;
            sum+=num;
        }
        cout << sum << endl;
    } 
}

// 方式2
#include<iostream>
using namespace std;
int main(){
    int n, a;
    while(cin >> n){
        if(n == 0)break;
        int sum = 0;
        for(int i=0; i<n; ++i){
            cin >> a;
            sum += a;
        }
        cout << sum << endl;
    }
    return 0;
}

5 先輸入組數,再輸入每組數據,每組第一個數為該組數據個數

#include<iostream>
using namespace std;
int main(){
    int group, num;
    cin >> group;
    for(int i = 0; i < group; ++i){
        cin >> num;
        int a;
        int sum = 0;
        for(int j = 0; j < num; ++j){
            cin >> a;
            sum += a;
        }
        cout << sum <<endl;
    }
}

6 輸入多組數據,每組第一個數為該組數據個數n

#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        int sum=0, num;
        for(int i=0;i<n;i++){
            cin >> num;
            sum+=num;
        }
        cout << sum << endl;
    } 
}

7 輸入多組數據,每行表示一組數據,每組數據個數不定√√

#include<iostream>
using namespace std;
int main(){
    int sum=0, a;
    while(cin >> a){
        sum += a;
        if(cin.get() == '\n'){ // 判斷數據之間的間隔是不是換行
            cout << sum <<endl;
            sum = 0;     
        }
    }
}

輸入字符串

8 輸入有兩行,第一行n,第二行是n個空格隔開的字符串

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int n;
    cin >> n;
    string s;
    vector<string> res;
    for(int i=0; i<n; ++i){
        cin >>s;
        res.push_back(s);
    }
    sort(res.begin(),res.end());
    for(auto s: res){
        cout << s << ' ';
    }
    return 0;
}

9 多個測試用例,每個測試用例一行,字符串間空格隔開

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    string s;
    vector<string> ans;
    while(cin >> s){
        ans.push_back(s);
        if(cin.get()=='\n'){
            sort(ans.begin(),ans.end());
            for(auto s:ans){
                cout << s << " ";
            }
            cout << endl;
            ans.clear();
        }
    }
    return 0;
}

10 多個測試用例,每個測試用例一行,字符串間逗號隔開

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    string s;
    vector<string> ans;
    char a;
    while(cin.get(a)){  // 一個一個字符地讀
        if(a!=','&&a!='\n'){
            s = s + a;
        }
        if(a==','){
            ans.push_back(s);
            s.clear();
        }
        // 一組數據結束
        if(a=='\n'){
            ans.push_back(s);
            s.clear();
            int n = ans.size();
            sort(ans.begin(),ans.end());
            for(int i=0;i<n-1;i++){
                cout << ans[i] << ",";
            }
            cout << ans[n-1] << endl;
            ans.clear();
        }
    }
    return 0;
}

11 自測本地通過提交為0

#include<iostream>
using namespace std;
int main(){
    long a, sum=0;
    while(cin >> a){
        sum += a;
        if(cin.get() == '\n'){ // 數據和數據之間不是換行,則是同組數據
            cout << sum <<endl;
            sum = 0;
        }
    }
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM