函數相關知識
-
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;
}