赞
踩
平时用力扣刷题,换成牛客这种需要打印输出结果对比判定的OJ不是很习惯,所以特别练习一下。尤其是对于8、9、10部分关于字符串的。
”纸上得来终觉浅,绝知此事要躬行“:练习代码
注意:变量在定义时最好就初始化,防止意想不到的bug
输入:
输出:
分析:
while(cin>>a>>b)
cout<<a+b<<endl;
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
int b;
while (cin>>a>>b){
cout<<a+b<<endl;
}
return 0;
}
输入描述:
输出描述:
分析:
已知组数n了,直接循环n次,在循环体中处理输出逻辑
while(n--){}
输出之间换行cout<<a+b<<"\n";
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
int a,b;
cin>>a>>b;
cout<<a+b<<"\n";
}
return 0;
}
输入描述:
输出描述:
思考:
while(cin>>a>>b && (a||b)
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b && (a||b)){
cout<<a+b<<"\n";
}
return 0;
}
输入描述:
输出描述:
思路:
while(cin>>n && n!=0)
while(n--) { }
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
while (cin >> n && n != 0) {
int tmp = 0, sum = 0;
while (cnt--) {
cin >> tmp;
sum += tmp;
}
cout << sum << "\n";
}
return 0;
}
输入描述:
输出描述:
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while (t--){ int n; cin>>n; int tmp; int sum=0; while (n--){ cin>>tmp; sum += tmp; } cout<<sum<<"\n"; } return 0; }
输入描述:
输出描述:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int tmp;
int sum=0;
while (n--){
cin>>tmp;
sum += tmp;
}
cout<<sum<<"\n";
}
return 0;
}
输入描述:
输出描述:
思考:
不知道多少组也不知道组里多少数,我们能把握的就是一组是一行,组内是空格分隔的
'\n'
区分根据上面的规则,化整为零,while循环条件是输入单个数据
cin.get()
继续获取下一个字符
注:
'\n'
用单引号!#include<bits/stdc++.h>
using namespace std;
int main(){
int cur;
int sum=0;
while (cin>>cur){
sum += cur;
if (cin.get() == '\n'){
cout<<sum<<"\n";
sum = 0;
}
}
return 0;
}
输入描述:
输出描述:
思路:
#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<string> ans(n); string tmp; for (int i=0; i<n; ++i){ cin>>ans[i]; } sort(ans.begin(),ans.end()); for (int i=0; i<n; ++i){ if (i==0){ cout<<ans[i]; }else { cout<<" "<<ans[i]; } } return 0; }
输入描述:
输出描述:
思路:
#include<bits/stdc++.h> using namespace std; void printv(vector<string>& strs){ for (int i=0; i<strs.size(); ++i){ if (i==0) cout<<strs[0]; else cout<<" "<<strs[i]; } cout<<"\n"; } int main(){ string cur; vector<string> strs; while(cin>>cur){ strs.emplace_back(cur); if (cin.get() == '\n'){ sort(strs.begin(),strs.end()); printv(strs); strs.clear(); } } return 0; }
输入描述:
输出描述:
思考:
vector<string> strs
当中
cur+=str[i];
strs.emplace_back(cur);
,注意还要记得清空cur为后续循环用 cur.clear();
strs
strs
就是我们要处理的输入,随后编写输出逻辑#include<bits/stdc++.h> using namespace std; void printv(vector<string> & strs){ for (int i=0; i<strs.size(); ++i){ if (i==0) cout << strs[0]; else cout<<","<< strs[i]; } cout<<"\n"; } int main(){ string str; vector<string> strs; string cur; while (cin>>str){ for(int i=0; i<str.size(); ++i){ if (str[i]!=','){ cur += str[i]; } else{ strs.emplace_back(cur); cur.clear(); } } strs.emplace_back(cur); cur.clear(); sort(strs.begin(),strs.end()); printv(strs); strs.clear(); } return 0; }
输入描述:
输出描述:
思考:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a+b;
while (cin>>a>>b){
cout<<"\n";
cout<<a+b;
}
return 0;
}
正当我怀疑题目出错的时候,我突然意识到自己的盲目性
**当头暴击!!!!**所以,如果自己认为自己写的算法没有问题,测试也没有问题,但是提交还是错误的时候,考虑考虑漏掉了什么corner case,考虑考虑自己选择的变量是不是”格局“小了!!!
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b;
cin>>a>>b;
cout<<a+b;
while (cin>>a>>b){
cout<<"\n";
cout<<a+b;
}
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。