OJ在线编程常见输入输出练习场。
OJ在线编程常见输入输出练习场https://ac.nowcoder.com/acm/contest/5657#question
1-注意事项:
- #include<bits/stdc++.h> 通用的库函数。有了它,别的也不需要了。
- 如果输入int数字,系统并不能识别输入的是字符串还是int,
所以对于复杂输入,可以考虑用字符串来读取,然后用ascii码来修正。
‘0’ . . . ‘9’ : 48 . . . 57
‘A’ . . . ‘Z’ : 65 . . . 90
‘a’ . . . ‘z’ : 97 . . . 122
- 求a的b次方pow(a,b)。 a^b,在c++代表位运算。
- 重要的读取函数
int a,b; string s0; cin>>a>>b; 读取两个字符。 getline(cin,s0); 读取一行所有字符到s0,包括空格字符。 cin>>s0;读取字符,但是遇到空格和换行符会停止。 if (cin.get()=='\n') {}; 逐个读取字符,判断是否读到换行符。 while(cin>>a) { }不定长的输入。操作。
2-一些读取例子
类型1:读取输入元素数量较少 ,适合int,string,double,float
类型1-1:读取输入两个整数 int a,b; cin>>a>>b; 类型1-2:读取多行数组,每行元素较少,为2个 int a,b; vector<int> v; while(cin>>a>>b){ v.push_back(a); v.push_back(b) 读取数字放进vector中。 }
类型2-:读取输入数字数量未知。
类型2-1:一次性读取多个值 while(cin>>a){ v.push_back(a) ; } 类型2-2:读取输入多行数字,每行数字的数量不一。 ```cpp vector<int>v;vector<vector<int>> vv;int a; while(cin>>a){ v.push_back(a) ; if(cin.get()=='\n'){ vv.push_back(v);} v.clear(); }
类型3:读取字符串,每行字符串数量未知,以","隔开。
思路:每次读取一行,然后找逗号重建子字符串。string s0,s1; vector<string>v; while(cin>>s0){ for(int i=0;i<s0.size();i++){ if(s0[i]!=','){s1+=s0[i];} else { v.push_back(s1);s1.clear();}; } v.clear();
类型4: 读取带空格的字符串,
string s; getline(cin,s);