平时用力扣刷题,换成牛客这种需要打印输出结果对比判定的OJ不是很习惯,所以特别练习一下。尤其是对于8、9、10部分关于字符串的。
”纸上得来终觉浅,绝知此事要躬行“:练习代码
注意:变量在定义时最好就初始化,防止意想不到的bug
输入:
输出:
分析:
#include
using namespace std;
int main(){
int a;
int b;
while (cin>>a>>b){
cout<<a+b<<endl;
}
return 0;
}
输入描述:
输出描述:
分析:
#include
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
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
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
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
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
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
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
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 strs
当中
cur+=str[i];
strs.emplace_back(cur);
,注意还要记得清空cur为后续循环用 cur.clear();
strs
strs
就是我们要处理的输入,随后编写输出逻辑#include
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
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
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;
}