Niuke.com Eingabe- und Ausgabeübungen – ACM-Modus – Python/C++
- 1. A + B (keine Zeilenanzahl eingeben)
- 2. A + B (Eingabe für gegebene Zeilenzahl)
- 3. A + B (Ende der angegebenen Bedingung)
- 4. A + B (Summe von Arrays gegebener Länge, inline)
- 5. A + B (nur bei gegebener Array-Länge zwischen den Zeilen)
- 6. A + B (keine Zeile angegeben, Array-Länge in der Zeile angegeben)
- 7. A + B (ohne Angabe der Anzahl der Zeilen und der Länge des Arrays in jeder Zeile)
- 8. String-Sortierung (Anzahl der Zeichen angeben)
- 9. String-Sortierung (Anzahl der Zeilen und Anzahl der Strings nicht angegeben)
- 10. String-Sortierung (Anzahl der Zeilen und Strings nicht angegeben, durch Kommas getrennt)
- 11. Andere Übungen
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)
Python-Antwort
Es gibt keine Eingabezeilennummer, daher wird eine verwendet, try except
um 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 cin
verwendet 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)
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
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)
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)
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)
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)
Python-Antwort
Das dritte Kind ist: try except
, input split
und 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.
stingstream
Die 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, diegeline(ss, res, ',')
Siess
selbst definierenstringstream
, und dannres
die, die Sie benötigensplit出来的子串
, 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
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)
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)
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;
}