跳到主要内容

编码规范

一、编码规范的意义:

好代码自己会说话,规范让BUG无处藏身!

二、必须遵守的编码规范(给学生的清单)**

1. 文件头注释(必须包含)

/*
题目:XXXX
作者:[你的名字]
日期:YYYY-MM-DD
算法:[简单描述]
关键点:[需要注意的地方]

*/

2. 变量命名规范

// 好的命名:
int studentCount; // 学生人数
int maxValue; // 最大值
bool isFound; // 是否找到
int arr[MAXN]; // 数组

// 不好的命名:
int n; // 意义不明
int a; // 太随意
int x1, x2, x3; // 序列号无意义

3. 缩进

// 正确缩进(4个空格或1个Tab)
for (int i = 0; i < n; i++)
{ // for后面有空格
if (a[i] > max)
{
max = a[i];
}
}

4. 花括号风格(统一使用Allman风格)

// Allman风格(推荐):括号单独一行,层次清晰
for (int i = 0; i < n; i++)
{
// 循环体
}

if (condition)
{
// 条件成立
}
else
{
// 条件不成立
}

优点:

  • 缩进清晰,代码结构清晰,可读性强
  • 是注释代码块时,不会影响括号

5. 常量定义

// 永远不要出现 magic number(魔法数字)
const int MAX_N = 100000; // 最大值
const int INF = 0x3f3f3f3f; // 无穷大(常用)
const double PI = 3.1415926; // 圆周率

三、C++编码规范基础版:

/*
题目:XXXX
作者:[你的名字]
日期:YYYY-MM-DD

思路:
1. [简要描述算法思路]
2. [可以分点说明]
3. [不需要太详细,但要清晰]
*/
#include <bits/stdc++.h>
using namespace std;

/*定义常量,明确数据规模,便于修改*/

/*定义数组*/
int main() {
//程序主体,要求:
// 1. 定义变量(一行一个,清晰),变量名最基本原则:
// + 循环变量用 i,j,k,l,m,n
// + 题目中提到的变量名,如"从a到b有多少偶数"中的a,b
// + 其它变量名去有意义的名字,可以是英语单词或拼音,一看变量名就知道什么意思。
// 2. **必须缩进**
// 3. 所有if/else/for 都带上括号,且左右括号都换行到行首
// 其它:
// + 最大值和最小值的初始值分别是 -0x3f3f3f3f 、0x3f3f3f3f,不要用 INT_MIN ,INT_MAX
// + 对于初学者,强烈建议下标从 1 开始用,直到 1 <= i <= n
// 这样能避免很多“少算一个”或“数组下标为负”的错误
for (int i = 1; i <= n; i++) {
...
}


return 0; //必须
}

四、具体示例:

例题:

最高分与最低分

Peter所在的班级是学校的信息学特长班,有n个学生,每个同学的信息学成绩都十分优秀。 今天所有同学完成了一场信息学模拟测试,现在老师请Peter帮忙按同学们的学号从小到大 的顺序录入所有同学的成绩。 现在老师想查询最高分跟最低分积极平均分,你能能帮帮他吗?

输入格式:

第1行:一个整数n(1 <= n <= 50); 第2行:n个数. 每个数的范围在-500到1000之间。

输出格式:

一行,三个数:最高分,最低分,平均分(保留两位小数)

代码示范:

C++编码规范基础版示范
/*
题目:计算平均分
作者:孙铭鸿
日期:2024-10-24

思路:
1.读n,
2. 再循环n 遍: 读取成绩,累加和,同时用擂台法选出当前最大值和最小值,
3. 用总成绩再除以人数
* 需要注意最大值和最小值的初始值分别是 -0x3f3f3f3f 、0x3f3f3f3f

*/
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 55; //50个人的成绩,考虑5个冗余防止越界。

int main() {
int n; // 人数
int scores[MAXN]; // 成绩数组
int sum = 0; // 总分
int min_score = 0x3f3f3f3f; // 最小值的初始值
int max_score = -0x3f3f3f3f; // 最大值的初始值

cin >> n;
for (int i = 0; i < n; i++) {
cin >> scores[i];
sum += scores[i]; // 累加分数

if (scores[i] < min_score) {
min_score = scores[i];
}
if (scores[i] > max_score) {
max_score = scores[i];
}
}

double average = (double)sum / n; // 平均值,注意类型转换

// 5. 输出结果(保留2位小数)
printf("%d\n%d\n%.2f\n", average); // 使用printf控制格式

return 0;
}

*学习笔记

暂没有学习笔记,快来抢first blood !