文章目录
- 背景
- 内容
- 总结
- reference
背景
现在还不会输入输出, 借此机会练习一下。
内容
1.接收多个a+b, 这里没数据就自己退出while循环了。
#include<iostream>
using namespace std;
int main(){
int a = 0 , b = 0;
while(cin>>a>>b){
cout<<a+b<<endl;
}
return 0;
}
2 ` n个a+b
输入描述:
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
输出描述:
输出a+b的结果
#include<iostream>
using namespace std;
int main(){
int n;
int a,b;
cin>>n;
for(int i = 0 ;i < n; i++){
cin>>a>>b;
cout<<a+b<<endl;
}
}
3`
链接:https://ac.nowcoder.com/acm/contest/5657/C
来源:牛客网
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出描述:
输出a+b的结果
#include<iostream>
using namespace std;
int main(){
int a, b ;
while(cin>>a>>b){
if(a==0&&b==0)break;
else cout<<a+b<<endl;
}
}
4`
链接:https://ac.nowcoder.com/acm/contest/5657/D
来源:牛客网
输入描述:
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
复制
4 1 2 3 4
5 1 2 3 4 5
0
输出
复制
10
15
#include<iostream>
using namespace std;
int main(){
int a, sum,n ;
while(cin>>n){
if(n==0)break;
else {
for(int i = 0 ; i < n ; i++ ){
cin>>a;
sum +=a;
}
cout<<sum<<endl;
sum = 0 ;
}
}
}
5`
链接:https://ac.nowcoder.com/acm/contest/5657/E
来源:牛客网
输入描述:
输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
复制
2
4 1 2 3 4
5 1 2 3 4 5
输出
复制
10
15
C++(clang++11)
ACM模式
1
#include<iostream>
2
using namespace std;
3
4
int main(){
5
int a , b , n;
6
cin>>n;
7
for(int i = 0; i < n; i++){
8
cin>>a;
9
int sum = 0;
10
for(int j = 0; j < a;j++){
11
cin>>b;
12
sum +=b;
13
}
14
cout<<sum<<endl;
15
}
16
return 0;
17
}
6`
链接:https://ac.nowcoder.com/acm/contest/5657/F
来源:牛客网
输入描述:
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
复制
4 1 2 3 4
5 1 2 3 4 5
输出
复制
10
15
#include<iostream>
using namespace std;
int main(){
int n,a,sum;
while(cin>>n){
int sum;
for(int i = 0 ; i < n;i++){
cin>>a;
sum += a;
}
cout<<sum<<endl;
sum = 0;
}
}
7 链接:https://ac.nowcoder.com/acm/contest/5657/G
来源:牛客网
输入描述:
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。(1 <= n <= 100)。
输出描述:
每组数据输出求和的结果
示例1
输入
复制
1 2 3
4 5
0 0 0 0 0
输出
复制
6
9
0
#include<iostream>
using namespace std;
int main(){
int n,a,sum;
while(cin>>n){
sum = sum +n;
if(cin.get()=='\n'){ // 读一个字符,包括空格
cout<<sum<<endl;
sum = 0;
}
}
}
链接:https://ac.nowcoder.com/acm/contest/5657/K
来源:牛客网
输入描述:
输入有多组测试用例,每组空格隔开两个整数
输出描述:
对于每组数据输出一行两个整数的和
示例1
输入
复制
1 1
输出
复制
2
#include<iostream>
using namespace std;
int main(){
long a,b;
while(cin>>a>>b){
cout<<a+b<<endl;
exit(0);
}
}
// 字符串处理 , 会这一个就很了灵活了, 啥都能干。
# include <bits\stdc++.h>
using namespace std;
int main(){
int n ;
cin>>n;
string str;
fflush(stdin);//用这个可以全部清空
while(gets(cin,str,' ')){// 这是以空格为结束, 可以设置以默认换行结束。 cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数。
if(str == " ")break;
cout<<str<<endl;
// if(cin.get()=='\n')break; // 读取一个字符、
}
cout<<"hello"<<endl;
}
总结
- 自己对 输入的理解更深入了一些, 如果我们是vector这种,多种测试样例的话就设置成while,然后放入数据到vector之中,如果检测到\n就进行计算,然后把vector清空继续做。笔试前一定要看这些输入的代码。尤其是那些可以输入不知道多少行的
- 普通的cin对空格或者回车 tab都认为进入下一个。 如果没有的话,直接退出了。
- cin.getline与cin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中。会读到接收的数组或者字符串中。
reference
- 输入参照文章
- fflush(stdin);//用这个可以全部清空
- 这个也可以看看, 很好的输入参照文章。