信息隐藏
函数名:大写单词(“见名知意”)
名词or动词加名词
eg.Fact为factorial(阶乘)
注释:表示功能及形参并如何使用
变量:小写单词
形容词加名词
函数返回值可以是除了数组的任何一种类型
无需返回任何值可以写成return;
%lu:无符号长整型格式
代码块<50
函数功能要单一
调用函数可能失败
错误处理代码一般在函数末尾,某些错误还要设计专门的错误处理函数
基线
const 常数
用const将形参声明为常量,可以防止形参在函数内被改变
auto自动变量
static long p = 1;
注意:从开始比较好算!p = 1只存在一次,后续保存值为最后的值,空间未被释放!
静态变量与程序共存亡!自动变量与程序块共存亡!
全局变量(保存在静态存储区内,没有显式初始化的外部变量由编译器自动初始化为0)在定义它前被使用(在要被其他文件使用),用下面句子声明
extern 类型名 变量名;
寄存器变量:
定义格式:
register 类型名 变量名;
(寄存器是CPU内部的一种容量有限但速度极快的存储器。)
可将使用频率较高的数据放在CPU
“模块化程序设计”(高聚合,低耦合,提高每个模块的相对独立性)(接口尽量简单)(程序的复用)
“自顶向下,逐步求精”
“设计,开发,测试,调试,测试,维护”
断言(Assert)(需要头文件有<assert.h>)(断言仅用作调试系统,不能作为程序的功能)
int MakeNumber(void)
{
int number;
number = (rand() % (MAX_NUMBER - MIN_NUMBER + 1)) + MIN_NUMBER;
assert(number >= MIN_NUMBER && number <= MAX_NUMBER);
return number;
}
每个函数定义结束后加一空行
在一个函数体内,相邻的两组逻辑上密切相关的语句块之间加空行
函数名后紧跟左括号
注释需要写想做什么,怎么做(边写代码边注释)
“数组的第二维长度声明永远不能忽略”
折半查找
int BinSearch(long num[], long x, int n)
{
int low = 0, high = n - 1, mid;
while(low <= high)
{
mid = (high +low)/2;
if(x > num[mid]){
low = mid + 1;
}
else if (x < num[mid]){
high = mid - 1;
}
else
return mid;
}
return -1;
}
判断flag
int flag = 0;
while(!= find && low <= high)
防止数据溢出
mid = low + (high - low)/2; //mid = (high + low)/2;
交换法和选择法