牛客网笔试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;
}