Niuke.com Eingabe- und Ausgabeübungen (Python/C++)

Dieser Artikel fasst hauptsächlich die Eingabe- und Ausgabeübungen auf Niuke Online zusammen. Antworten von verschiedenen Experten finden Sie unter: https://ac.nowcoder.com/acm/contest/5657#question

1. A + B (keine Zeilenanzahl eingeben)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

Es gibt keine Eingabezeilennummer, daher wird eine verwendet, try exceptum zu bestimmen, wann die Eingabe gestoppt werden soll.

while True:
    try:
        a, b = map(int, input().split())
        print(a + b)
    except:
        break

C++-Antwort

C++ muss hier hauptsächlich while cinverwendet werden, um zu bestimmen, ob die Eingabe gestoppt werden soll

#include<bits/stdc++.h>
using namespace std;

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

2. A + B (Eingabe für gegebene Zeilenzahl)

Fügen Sie hier eine Bildbeschreibung ein

Hier wird die Anzahl der Eingabezeilen angegeben, es ist also sehr einfach.

Python-Antwort

n = int(input())
while n:
    a, b = map(int, input().split())
    print(a + b)
    n -= 1

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

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

3. A + B (Ende der angegebenen Bedingung)

Im Folgenden finden Sie eine Beschreibung des Themas
Fügen Sie hier eine Bildbeschreibung ein

Hier müssen Sie anhand der Eingabe bestimmen, ob gestoppt werden soll.

Python-Antwort

while True:
    a, b = map(int, input().split())
    if a != 0 and b != 0: print(a + b)
    else: break

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

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

4. A + B (Summe von Arrays gegebener Länge, inline)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

while True:
    arr = list(map(int, input().split()))
    if arr[0] == 0: break
    else: print(sum(arr[1:]))

C++-Antwort

Es ist sehr einfach, die Länge seines Arrays zu erklären.

#include<bits/stdc++.h>
using namespace std;

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

5. A + B (nur bei gegebener Array-Länge zwischen den Zeilen)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

Das Leben ist kurz!

n = int(input())
while n:
    print(sum(list(map(int, input().split()))[1:]))
    n -= 1

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    cin >> n;
    while(n --)
    {
    
    
        int len, sum = 0, a;
        cin >> len;
        while(len --)
        {
    
    
            cin >> a;
            sum += a;
        }
        cout << sum << endl;
    }

    return 0;
}

6. A + B (keine Zeile angegeben, Array-Länge in der Zeile angegeben)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

while True:
    try:  # 对于没有行提示的,使用try except就很简单
        print(sum(list(map(int, input().split()))[1:]))
    except:
        break

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    while(cin >> n)
    {
    
    
        int sum = 0, a;
        while(n --)
        {
    
    
            cin >> a;
            sum += a;
        }
        cout << sum << endl;
    }
    
    return 0;
}

7. A + B (ohne Angabe der Anzahl der Zeilen und der Länge des Arrays in jeder Zeile)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

Das dritte Kind ist: try except, input splitund list map.

while True:
    try:
        print(sum(list(map(int, input().split()))))
    except:
        break

C++-Antwort

Es gibt im Wesentlichen drei Möglichkeiten, sich dieser Frage zu nähern:

  • Methode 1: Sie können einen String in jeder Zeile in einen Stream konvertieren und ihn dann summieren. stingstreamDie verwendete Header-Datei ist #include <sstream>;
  • Methode 2: cin.get()Urteilen Sie und drücken Sie die Eingabetaste
  • Übung 3: Gängige Praxis, zum Verständnis dringend empfohlen! ! ! ! ! Um hier die Zeilendaten zu lesen, getline(cin, s)müssen wir nicht die dritte hinzufügen 分割参数. Nachdem wir die Zeichenänderung dieser Zeile erhalten haben, verwenden wir die, die geline(ss, res, ',')Sie ssselbst definieren stringstream, und dann resdie, die Sie benötigen split出来的子串, und dann bedeutet das, dass Sie die ‘,’verwenden 逗号Split-StreamNatürlich können Sie auch andere Methoden verwenden, die je nach Thema geändert werden können.
// 做法一:使用stringstream
#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    string s;
    while (getline(cin, s)) 
    {
    
    
        stringstream ss(s);
        int sum = 0, num;
        while (ss >> num) //这里可以改成while(getline(ss, num, ' ')), 但是num类型要换成string,另一方面,sum += stoi(num)
            sum += num;
        cout << sum << "\n";
    }
}

// 做法二:使用cin.get() 读取不用的字符,从而来帮助判断
#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int a;
    while (cin >> a) 
    {
    
    
        int sum = 0;
        while(true)
        {
    
    
        	/*
        	1.这个cin.get()的判断要放在运算后,不然最后一个数字都不进来;
        	2.cin会在空格或这换行的时候停止读取,因此,这个时候可以用cin.get()读取,从而帮助判断是否本行结束
        	*/
        	sum += a;
            if(cin.get() == '\n') break; 
            cin >> a;
        }
        cout << sum << "\n";
    }
}

// 做法三:ss的通用做法
#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    string s;
    while (getline(cin, s)) 
    {
    
    
        stringstream ss(s);
        int sum = 0;
        string num;
        while (getline(ss, num, ' ')) // geline函数第三个参数是按照那个字符来进行流的分割
            sum += stoi(num);
        cout << sum << "\n";
    }
}

8. String-Sortierung (Anzahl der Zeichen angeben)

Im Folgenden finden Sie eine Beschreibung des Themas

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

Einfach direkt einlesen, n wird eigentlich nicht benötigt.

n = int(input())
arr = input().split()
arr.sort()
print(' '.join(arr))

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    cin >> n;
    vector<string> ss;
    while(n --)
    {
    
    
        string str;
        cin >> str;
        ss.push_back(str);
    }
    sort(ss.begin(), ss.end());
    for(auto str: ss) cout << str << " ";
    return 0;
    
}

9. String-Sortierung (Anzahl der Zeilen und Anzahl der Strings nicht angegeben)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

while True:
    try:
        arr = input().split()
        arr.sort()
        print(" ".join(arr))
    except:
        break

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    string line;
    while(getline(cin, line))
    {
    
    
        vector<string> arr;
        stringstream ss(line);
        string item;
        while(getline(ss, item, ' '))
            arr.push_back(item);

        sort(arr.begin(), arr.end());
        for(auto str: arr) cout << str << " ";
        cout << endl;
    }

    return 0;
    
}

10. String-Sortierung (Anzahl der Zeilen und Strings nicht angegeben, durch Kommas getrennt)

Fügen Sie hier eine Bildbeschreibung ein

Python-Antwort

while True:
    try:
        arr = input().split(",")
        arr.sort()
        print(",".join(arr))
    except:
        break

C++-Antwort

#include<bits/stdc++.h>
using namespace std;

int main()
{
    
    
    int n;
    string line;
    while(getline(cin, line))
    {
    
    
        vector<string> arr;
        stringstream ss(line);
        string item;
        while(getline(ss, item, ','))
            arr.push_back(item);

        sort(arr.begin(), arr.end());
        for(int i = 0; i < arr.size(); i++) 
        {
    
    
            cout << arr[i];
            if (i != arr.size() - 1) cout << ",";
        }
            
        cout << endl;
    }

    return 0;
    
}

11. Andere Übungen

Dies ist ein Symbolübereinstimmungsproblem.
Das Beispiel lautet wie folgt

样例:
3
10
if
while
loop
end loop
end while
for
end for
end if
switch
end switch
4
if
while
end if
end while
3
if
end if
if

解答:
Yes
No
No
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>


using namespace std;

bool judge(vector<string> &arr)
{
    
    
    vector<string> stack;
    for(auto cmd: arr)
    {
    
    
        stringstream ss(cmd);
        string item;
        while(getline(ss, item, ' '))
        {
    
    
            if(item == "end") 
            {
    
    
                ss >> item;
                // cout << item << "ok?" << endl;
                if(stack.empty() | stack.back() != item) return false;
                else stack.pop_back();
            }
            else stack.push_back(item);
        }
    }
    if(stack.empty()) return true;
    else return false;
}

int main()
{
    
    
    int t;
    cin >> t;
    while(t --)
    {
    
    
        int n;
        cin >> n;
        vector<string> arr;
        cin.get(); // cin不会读这个回车,因此需要get()吃一下回车!!!!!!!!!
        while(n --)
        {
    
    
            string cmd;
            getline(cin, cmd);
            arr.push_back(cmd);
        }
        
        bool res = judge(arr);
        if(res) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
    
    return 0;
}

Ich denke du magst

Origin blog.csdn.net/qq_36306288/article/details/124215430
Empfohlen
Rangfolge