1.代码风格:
1.1.缩进:
1.1.1.正常使用4个空格缩进
1.1.2.在for循环中,for循环的括号和"for"与大括号之间存在一个空格
1.1.3.在if判断中,if判断的括号和"if"与大括号之间存在一个空格
1.1.4.在while循环中,while循环的括号和"while"与大括号之间存在一个空格
1.1.5.在do-while循环中,do-while循环的括号和"do"与大括号之间存在一个空格,“while"与大括号之间不存在空格
1.1.6.在switch判断中,switch判断的括号和"switch"与大括号之间存在一个空格,case与switch存在4个空格的缩进
1.1.7.在函数定义中函数定义的括号和函数名之间存在一个空格(包括main主函数)
1.1.8.在类定义中类定义的括号和类名之间存在一个空格
1.1.9.在结构体定义中结构体定义的括号和结构体名之间存在一个空格
1.1.10.在枚举定义中枚举定义的括号和枚举名之间存在一个空格
1.2.压行:
1.2.1.在仅包括一个表达式的if判断中,不用大括号,写在一行内,并且括号与表达式之间存在一个空格,示例(在”" 与 "
"之间的部分):
if (a == b) {
cout << "a == b\n";
}
转变为:
if (a == b) cout << "a == b\n";
\,
1.2.2.在仅包括一个表达式的while循环中,不用大括号,写在一行内,并且括号与表达式之间存在一个空格,示例(在"```" 与 "```"之间的部分):
while (a == b) {
cout << "a == b\n";
}
转变为:
while (a == b) cout << "a == b\n";
\,
1.2.3.在仅包括一个表达式的do-while循环中,不用大括号,写在一行内,并且括号与表达式之间存在一个空格,示例(在"```" 与 "```"之间的部分):
do {
cout << "a == b\n";
}
while (a == b);
转变为:
do cout << "a == b\n"; while (a == b);
\,
1.2.4.在仅包括一个表达式的switch判断中,不用大括号,写在一行内,并且括号与表达式之间存在一个空格,示例(在"```" 与 "```"之间的部分):
switch (a) {
case 1:
cout << "a == 1\n";
break;
}
转变为:
switch (a) {
case 1: cout << "a == 1\n"; break;
}
\,
(如果case后面的语句只有一行,则可以不写大括号,但是如果case后面的语句有多行,则必须写大括号)
1.2.5.在仅包括一个表达式的for循环中,不用大括号,写在一行内,并且括号与表达式之间存在一个空格,示例(在"" 与 "
"之间的部分):
for (int i = 0;i <= n;i++) {
cout << i << endl;
}
转变为:
for (int i = 0;i <= n;i++) cout << i << endl;
1.2.6.可以合并的语句使用逗号表达式合并到同一行
1.2.7.为了方便阅读,每行出去for循环以外最多只能有一个分号
\,
1.3.命名规则:
1.3.1.变量名:
1.3.1.1变量名尽量使用英文,尽量不使用拼音
1.3.2.2变量名尽量使用有意义的单词
1.3.3.3变量名尽量使用小写字母
1.3.4.4变量名尽量使用下划线分隔
1.3.2.函数名:
1.3.2.1.函数名尽量使用英文,尽量不使用拼音
1.3.2.函数名尽量使用有意义的单词
1.3.2.3.函数名尽量使用小写字母
1.3.2.4.函数名尽量使用下划线分隔
1.3.3.类名:
1.3.3.1.类名尽量使用英文,尽量不使用拼音
1.3.3.2.类名尽量使用有意义的单词
1.3.3.3.类名尽量使用小写字母
1.3.3.4.类名尽量使用下划线分隔
1.3.4.结构体名:
1.3.4.1.结构体名尽量使用英文,尽量不使用拼音
1.3.4.2.结构体名尽量使用有意义的单词
1.3.4.3.结构体名尽量使用小写字母
1.3.4.4.结构体名尽量使用下划线分隔
1.3.5.枚举名:
1.3.5.1.枚举名尽量使用英文,尽量不使用拼音
1.3.5.2.枚举名尽量使用有意义的单词
1.3.5.3.枚举名尽量使用小写字母
1.3.5.4.枚举名尽量使用下划线分隔
1.3.6.常量名:
1.3.6.1.常量名尽量使用英文,尽量不使用拼音
1.3.6.2.常量名尽量使用有意义的单词
1.3.6.3.常量名尽量使用大写字母
1.3.6.4.常量名尽量使用下划线分隔
1.3.7.宏定义名:
1.3.7.1.宏定义名尽量使用英文,尽量不使用拼音
1.3.7.2.宏定义名尽量使用有意义的单词
1.3.7.3.宏定义名尽量使用大写字母
1.3.7.4.宏定义名尽量使用下划线分隔
1.3.8.函数参数名:
1.3.8.1.函数参数名尽量使用英文,尽量不使用拼音
1.3.8.2.函数参数名尽量使用有意义的单词
1.3.8.3.函数参数名尽量使用小写字母
1.3.8.4.函数参数名尽量使用下划线分隔
1.3.9.函数返回值名:
1.3.9.1.函数返回值名尽量使用英文,尽量不使用拼音
1.3.9.2.函数返回值名尽量使用有意义的单词
1.3.9.3.函数返回值名尽量使用小写字母
1.3.9.4.函数返回值名尽量使用下划线分隔
1.4.代码细节:
1.4.1.在cout输出中,末尾的换行尽量使用endl,其他部分尽量使用’\n’,可以合并的尽量合并,示例:
cout << 1 << endl << ans << '\n';
转变为:
cout << "1\n" << ans << endl;
\,
1.4.2.大范围使用long long变量类型时,使用define ll long long,并按以前规则压行处理,示例:
long long a = 1;
long long b =1;
转变为:
#define ll long long
ll a =1,b =1;
\,
1.4.3.尽量使用c++的输入输出流,如果可能超时,不要使用scanf和printf,而是使用关闭同步流,并且使用define close std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0),并将close放在main函数的第一行,示例:
#include <bits/stdc++.h>
#define close std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
int main() {
close;
int a,b;
cin >> a >> b;
}
\,
1.4.4.如果存在输入输出字符串,那么不要使用关闭同步流,使用scanf和printf输入常规变量,用cin和cout输入字符串,示例:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b;
char c;
string s;
scanf("%d%d %c",&a,&b,&c);
cin >> s;
printf("%d%d %c\n",a,b,c);
cout << s << endl;
}
\,
1.4.5.变量刚定义时赋初值,格式是a =1
,而不是a=1
,示例:
int a = 1;
int b = 1;
转变为:
int a =1,b =1;
```
1.4.5.变量后来赋值时,格式是`a = 1`,而不是`a =1`,示例:
```cpp
int a = 1;
int b = 1;
a = 2;
b = 2;
转变为:
int a =1,b =1;
a = 2,b = 2;
\,
1.4.6.如果存在多个变量的赋值,那么可以使用逗号表达式合并到同一行,示例:
int a = 1,b = 1;
int c = 1,d = 1;
转变为:
int a =1,b =1,c =1,d =1;
\,
1.4.7.所有以#开头的语句最好放在using namespace std;命名空间的前面
1.4.8.所有的函数定义最好放在main函数的前面
1.4.9.所有的类定义最好放在main函数的前面
1.4.10.所有的结构体定义最好放在main函数的前面
1.4.11.所有的枚举定义最好放在main函数的前面
1.4.12.所有的常量定义最好放在main函数的前面(使用全局变量)
1.4.13.所有的宏定义最好放在main函数的前面
1.4.14.所有的函数参数定义最好放在main函数的前面
1.4.15.能使用class的尽量使用class,不能使用class的尽量使用struct
2.回复制约:
2.1.所有的符号使用看前面的字符是中文还是字符(1~9算字符),中文用中文,英文用英文,括号等可以不考虑是否匹配,示例:
所以1 +1 =2,可一加一等于二。
3.码风示例:
#include <bits/stdc++.h>
using namespace std;
string s;
void print() {
for (int i =0;i <= s.size();i++) {
cout << s[i];
}
}
int main() {
cin >> s;
print();
return 0;
}