1、仅供复习参看 03-C 语言的基本知识 考试内容: struct SurPnt char name11; double x, y, z; char code11; ; -or- typedef struct _surPnt char name11; double x, y, z; char code11; SurPnt; 指针: void * p = NULL; 函数:函数的参数定义, 返回值定义, 函数的多个返回值定义 数组( 动态数组)的使用: 用于函数参数等 /第 三 题 (数据用空格 隔开的 ) 文本文件的读写: #include #include /数据类型: x05 9398.68
2、7 17552.803 class Pnt2D public: char name11; double x,y; ; int main() Pnt2D point1000; FILE * in; char buffer255; int i=0; in=fopen(“point.txt“,“r“); while( fgets(buffer,255,in) ) sscanf(buffer,“%s %lf %lf“, i+; fclose(in); return 0; 04-C+基础与 Windows 程序设计 考试内容: class SurPnt public: /第一题: 3 static in
3、t count; static void getInfo(.) char * nm = this-name;/* SurPnt * p = . char * nm = p-name; /还有最后一句 SurPnt:count = 0; char name11; double x, y; char code11; double Distance(const SurPnt * other) double dx = other-x - x; double dy = other-y - y; return sqrt(dx * dx + dy * dy); /第一题: 1 SurPnt() SurPnt
4、(const char * name, double x, double y) strcpy(this-name, name); this-x = x; this-y = y; SurPnt() virtual void Draw() virtual void Cal() = 0; ; SurPnt:count = 0; -or- struct SurPnt char name11; double x, y; char code11; ; 对象:客观世界的任何一个事物都可以看成一个对象 类: 具有相同属性和行为的所有对象的集合 。 关系: 类是对具有共同属性特征与行为特征的对象的抽象。 对象是
5、类的实例化。 实例: 成员变量 成员函数 : 构造函数 析构函数 一般成员函数 *虚函数 virtual *纯虚函数 =0; *运算符重载函数 SurPnt p1; p1.x = . SurPnt * p; . p-x = . 静态: 变量 静态成员:能够被类的所有对象共享的数据成员 与普通数据成员的区别:一个类的静态数据成员仅创建和初始化一次,且在程序开始执行的时候创建,然后被该类的所有对象共享;而非静态数据成员则随着对象的创建而多次创建和初始化。 函数:在静态函数中不能直接调用实例成员 , 只能通过类的实例对象去调用 SurPnt:count 2. 引用:用于参数传值 3. 函数重载 :函
6、数的名字相同,只有参数的个数或类型不同 4. 继承: 是 在一个较一般的类 (基类) 的基础上很快地建立一个新类 (子类) ,而不必从零开始设计每个类 /第一题: 2 class SurPnt3D : public SurPnt public: double z; SurPnt3D() SurPnt3D(const char * nm, double x, double y, double z) strcpy(this-name, nm); this-x = x; this-y = y; this-z = z; ; 05-常用测量函数设计 考试内容: 常用的测量函数的设计 #define TO
7、ANG 57.295779513082320876798154814105 #define TORAD 0.017453292519943295769236907684886 1角度化弧度函数: double DMStoRAD(double dms) int d, m, f; double s; f = dms=0 ? 1 : -1; /0.001 秒 4.8481368110953599358991410235795e-9 弧度 dms += f * 0.0000001; d = (int)dms; dms = (dms - d) * 100.0; m = (int)dms; s = (dm
8、s - m) * 100.0; return (d + m / 60.0 + s / 3600.0) * TORAD - f * 4.8481368110953599358991410235795e-9; 2弧度化角度函数 double RADtoDMS(double rad) int f = rad = 0 ? 1 : -1; / 符号 /加 0.001 秒(用弧度表示),化为度 rad = (rad + f * 4.8481368110953599358991410235795e-9) * TOANG; int d = (int)rad; rad = (rad - d) * 60.0; i
9、nt m = (int)rad; double s = (rad - m) * 60.0; return d + m / 100.0 + s / 10000.0 - f * 0.0000001; 3 .坐标方位角推算 1.已 知 01 边的坐标方位 角 0 和 01 边 和 12 边间的水平 角 , 计 算12 边的 坐 标方位 角 。 double Azimuth(double azimuth0, double angle) return To0_2PI(azimuth0 + angle + _PI); 2.将角度规划到 0 2 , 单位为弧度 double To0_2PI(double r
10、ad) int f = rad = 0 ? 0 : 1; int n = (int)(rad/TWO_PI); return rad - n * TWO_PI + f * TWO_PI; 4.平面坐标正反算 () 1.坐标正算: 根据 01 点的坐标方位角和水平边长 , 计算 01 点的坐标增 量 。 void dxdy(double azimuth, double distance, double dy = sin(azimuth) * distance; 根据 0 点的坐标和 0i点的坐标方位角和水平边长 , 计算 i点的坐 标 。 void Coordinate(double x0, d
11、ouble y0, double azimuth, double distance, double yi = y0 + sin(azimuth) * distance; 根 据 1 点的坐标和后视 边 (01)点的坐标方位 角 , 水平 角 (0-1-i), 水平 边 长 (1-i), 计算 i点的坐 标 。 void Coordinate(double x0, double y0, double azimuth0, double angle, double distance, double xi = x0 + cos(azimuthi)*distance; yi = y0 + sin(azimuthi)*distance; 2.坐标反算: 计算 0 点至 1 点的坐标方位角 , 返回值单位为弧 度 。 double Azimuth(double x0, double y0, double x1, double y1) double dx = x1 - x0; double dy = y1 - y0; return atan2(dy, dx) + (dy name,name)=0) pp-x=x; pp-y=y; break; return pp;