题外话:如何查询代码运行速度
在做了PTA浙大的程序题中我发现了这么一个要求:
就是对这些很关键的体现水平高低的一些参数做了要求。一般人也学不到需要考虑这个问题的境界。这里对程序的运行时间做一种查看方法介绍:
比如我们随便写一块代码:
#include<time.h>
int main()
{
double start,finish;
start = (double)clock();
int a = 1;
int b = 2;
int sum = a + b;
printf("sum=%d\n", sum);
finish = (double)clock();
printf("%.5f ms", finish - start);
return 0;
}
一个很简单的代码,只是现在我还不能理解它的意义。
//查看代码运行时间
//double start, finish;
//start = (double)clock();//程序运行时间,在程序开始处使用
//finish = (double)clock();//程序结束处
//printf("%.5f ms".finish - start);//输出时间差秒数
函数的声明和定义(续)
接上回继续补充。
#ifndef __Add_H__
#define __Add_H__
//函数的声明
int Add(int, int);
#endif //__Add_H_
相对上节所说我们多了几行说明,即
#ifndef __Add_H__
#define __Add_H__
#endif //__Add_H_
这是为了工程化使用。其后面__Add_H__的意义即取自头文件本身的名字add.h
我们引用头文件的时候,比如
#include <stdio.h>
往往别人也会引用,而且这样子的引用,其实是将整个头文件的代码都加入了这个文件之中,如果多人都引用,就容易造成冗杂。
ifndef即为if not define之意,如果原来这个头文件没有被引用,那就继续define,函数声明,在endif停止。
如果原来已经被引用则ifndef判断为假就不再继续。这就防止了函数被重复引用。
递归
程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化成一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
递归的主要思考方式在于:大事化小
int main()
{