在源文件中编写程序如下
学习:C++中的头文件和源文件详解
学习:C++中的头⽂件和源⽂件详解
⼀、C++编译模式:
通常,在⼀个C++程序中,只包含两类⽂件――.cpp⽂件和.h⽂件。其中,.cpp⽂件被称作C++源⽂件,⾥⾯放的都是C++的源代码;⽽.h⽂件则被称作C++头⽂件,⾥⾯放的也是C++的源代码。
C++语⾔⽀持"分别编译"(separate compilation)。也就是说,⼀个程序所有的内容,可以分成不同的部分分别放在不同的.cpp⽂件⾥。.cpp⽂件⾥的东西都是相对独⽴的,在编译(compile)时不需要与其他⽂件互通,只需要在编译成⽬标⽂件后再与其他的⽬标⽂件做⼀次链接(link)就⾏了。
⽐如,在⽂件a.cpp中定义了⼀个全局函数void a() {},⽽在⽂件b.cpp中需要调⽤这个函数。即使这样,⽂件a.cpp和⽂件b.cpp并不需要相互知道对⽅的存在,⽽是可以分别地对它们进⾏编译,编译成⽬标⽂件之后再链接(link),整个程序就可以运⾏了。
这是怎么实现的呢?从写程序的⾓度来讲,很简单。在⽂件b.cpp中,在调⽤void a()函数之前,先声明⼀下这个函数void a();,就可以了。这是因为编译器在编译b.cpp的时候会⽣成⼀个符号表(symbol table),像void a()这样的看不到定义的符号,就会被存放在这个表中。再进⾏链接的时候,编译器就会在别的⽬标⽂件中去寻找这个符号的定义。⼀旦找到了,程序也就可以顺利地⽣成了。
注意这⾥提到了两个概念,⼀个是“定义”,⼀个是“声明”。简单地说,“定义”就是把⼀个符号完完整整地描述出来:它是变量还是函数,返回什么类型,需要什么参数等等。⽽“声明”则只是声明这个符号的存在,即告诉编译器,这个符号是在其他⽂件中定义的,我这⾥先⽤着,你链接的时候再到别的地⽅去找找看它到底是什么吧。定义的时候要按C++语法完整地定义⼀个符号(变量或者函数),⽽声明的时候就只需要写出这个符号的原型了。需要注意的是,⼀个符号,在整个程序中可以被声明多次,但却要且仅要被定义⼀次。试想,如果⼀个符号出现了两种不同的定义,编译器该听谁的?
《Java语言程序设计(一)》课后习题答案(课程编号04747)
第一章 Java语言基础 (5)
1.1 指出JA V A语言的主要特点和JA V A程序的执行过程。 (5)
1.2 说出开发与运行JA V A程序的重要步骤。 (5)
1.3 如何区分应用程序和小应用程序? (5)
1.4 说出JA V A源文件的命名规则。 (5)
1.6 JA V A语言使用什么字符集?共有多少个不同的字符? (5)
1.7 JA V A语言标识符的命名规则是什么? (6)
1.8 JA V A有那些基本数据类型,它们的常量又是如何书写的? (6)
1.9 指出下列内容哪些是JA V A语言的整型常量,哪些是浮点数类型常量,哪些两
者都不是。 (6)
第二章运算和语句 (7)
2.1 Java的字符能参加算术运算吗? (7)
2.2 占字节多的变量能直接赋值给占字节少的变量么? (7)
2.3 试用Java语言表达式描述以下数学计算式或逻辑条件: (7)
2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,
变量a、b和c的值。 (7)
2.6 若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000
之内的所有完全数。 (7)
2.7 编写输入正实数x,求平方不超过x的最大整数n,并输出。 (8)
2.8 输入正整数n,输出由n行n列星号字符组成的三角形图案。 (11)
2.9 设有整型变量x和y的值分别为5和110。试指出执行了以下循环语句后,变
量x和y的值分别多少? (12)
2.10求小于999的所有水仙花数。 (12)
2.11 编程序解百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百
CodeBlocks编写程序[1]
17 3. 编写程序下载安装Code::Blocks以后,您就可以编写代码了。Code::Blocks创建一个工作空间(workspace)跟踪你当前的工程(project)。如果有必要,您还可以在您当前的工作空间创建多个工程。一个工程就是一个或者多个源文件(包括头文件)的集合。源文件(source file) 就是您程序中包含源代码的文件,如果您正在编写C++程序,您就正在编写C++源代码(文件后缀名为.cpp)。您创建库文件(library files, 文件后缀名为.h 或.hpp)时,会用到头文件(header file) 。一个库(library)是为了实现特定目标的函数集合,例如数学运算。创建一个工程可以方便的把相关文件组织在一起。一个工程刚建立时,一般仅仅包含一个源文件。但是,伴随着您编程经验的增长可能会用到更复杂的工程,此时一个工程可能包含很多源文件以及头文件。3.1 创建一个工程创建工程的方法很多,您可以选择主菜单File的下拉菜单中选择二级菜单New,然后从子菜单中选择Project…,如左上图。也可以从图标按钮开始创建,用鼠标点击File下面的, 会弹出一个对话框,从弹出的对话框中选择Project…按钮,如右图: 您还可以从Code::Blocks主界面中选择Create a new project按钮进行创建,见右面Create a new project的图标。无论使用哪种方式创建一个工程,都会打开一个对话框,见下图。18 这个窗口中含有很多带有标签的图标,代表不同种类的工程。我们最常用的可能是Console application,用来编写控制台应用程序。其它的是一些更高级的应用。用鼠标选中带有控制台应用(Console application)标签的图标,见右图。再选择右侧的Go按钮,这样会弹出一个新的对话框,见下图。再选择Next按钮进入下一步,弹出一个对话框,见下图。19 在弹出的对话框中有C和C++两个选项,选择C++表示编写C++控制台应用程序,选择C表示编写C 控制台应用程序。这里以编写C++程序为例,因此选择C++,见上图。接下来选择下方的Next按钮进入下一步,又弹出一个对话框,见下图。弹出的对话框中有4个需要填写文字的地方,填上前两个(工程名和工程文件夹路径),后两个位置需要填写的内容可以自动生成。见上图。然后选择Next按钮进入下一步,见下图。20 编译器选项仍旧选择默认的编译器,剩下的全部打勾,见上图。然后选择Finish按钮,则创建了一个为project1的工程。用鼠标点逐级击使之变成,依次展开左侧的project1,Sources, main.cpp,最后显示文件main.cpp的源代码,见下图。3.2 添加和删除文件当建立一个工程后,我们往往需要往工程中添加新文件,工程不需要的文件则要从工程中删除之。3
C语言全部实验
1.创建程序,实现计算一个数的平方和立方
#include <stdio.h>
void main()
{
int a;
printf(" 请输入1个数,按回车结束:");
scanf("%d",&a);
printf(" %d的平方:%d\n",a,a*a);
printf(" %d的立方:%d\n",a,a*a*a);
}
2计算两个数的加减乘除
. #include <stdio.h>
void main()
{
float a,b;
printf("----计算器----\n");
printf("请分别输入2个数,用空格分隔,按回车结束:\n");
scanf("%f%f",&a,&b);
printf("计算结果:\n");
printf(" %f + %f = %f\n",a,b,a+b);
printf(" %f - %f = %f\n",a,b,a-b);
printf(" %f * %f = %f\n",a,b,a*b);
printf(" %f / %f = %f\n",a,b,a/b);
}
3.猜数字
#include<stdlib.h> //为了获得随机数
#include <stdio.h>
#include<time.h> //获取时间
int rNumber();
void main()
{
int a,number,i;
printf("-------小游戏----猜数字-------\n");
number=rNumber();
printf("随机数字生成完成,游戏开始!\n");
实验一 Java环境演练1
实验一 Java环境演练
【目的】
①安装并配置Java运行开发环境;
②掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;
③学习同时编译多个Java源文件。
【内容】
1.一个简单的应用程序
✧实验要求:
编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
✧程序运行效果示例:
程序运行效果如下图所示:
✧程序模板:
Hello.java
public class Hello
{
public static void main (String args[ ])
{
【代码1】//命令行窗口输出"你好,很高兴学习Java"
A a=new A();
a.fA();
}
}
class A
{
void fA()
{
【代码2】//命令行窗口输出"We are students"
}
}
✧实验后的练习:
1.编译器怎样提示丢失大括号的错误?
2.编译器怎样提示语句丢失分号的错误?
3.编译器怎样提示将System写成system这一错误?
4.编译器怎样提示将String写成string这一错误?
5.程序中的主类如果不用public修饰,编译能通过吗?能
6.程序中的主类如果不用public修饰,程序能正确运行吗?
7.程序将print方法误写成Print,编译能通过么?不能
8.程序将print方法误写成Print,运行时能看到有关的输出信息吗?
2.联合编译
✧实验要求:
编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。
STEP7STL源文件应用技巧
在STL 源文件中,将数据块的实际值直接保存为初始值
当生成STL 源文件后,实际值可以逐行拷贝至STL 源程序中的声明语句中。No.
步骤
1 在SIMATIC Manager 选择菜单指令"View > Online" ,在线打开要执行操作的数据块。选择菜单命令“File > Save” 或点击软盘图标保存该数据块。
2
通过菜单命令“File > Generate Source...”生成此数据块的源文件。
3
打开生成的源文件,该文件位于SIMATIC Manager 的Source 文件夹。
4 在STL 源文件中,将位于“BEGIN”和“END_DATA_BLOCK”语句之间的实际值逐行复制到相应的声明行(初始值)及相应的数据类型之中。
图01
如图01 所示,通配符“:=”也必须和实际值一起复制到初始值的声明行。以下是声明行定义的一个示例:
∙Data_1 : BYTE := B#16#AA;
5
保存编译STL 源程序
∙File > Save
File > Compile
此时,实际值被用作初始值
使用Excel 将数据块的实际值保存为初始值
当数据量较大时,推荐使用Excel 进行操作,这是因为此时数据是逐块而不是逐行被复制到声明区域的。下述表格介绍了如何导入/导出STL 源文件及将其保存在Excel 中。
步骤
No.
1 在SIMATIC Manager 选择菜单指令"View > Online" ,在线打开要执行操作的数据块。选
择菜单命令“File > Save” 或点击软盘图标保存该数据块。
项目3 顺序结构程序设计
printf(格式控制,输出表列)
例如:
printf(“%d,%c﹨n”,i ,c)
2、格式字符
(1) d格式字符。用来输出一个有符号的十进制整数。
可以在格式声明中指定输出数据的域宽(所占的列数),如用“%5d”,指定输出数
据占5列,输出的数据显示在此5列区域的右侧。如:
printf(“%5d﹨n%5d﹨n”,12,-345);
∥程序重要调用求平方根函数sqrt
int main ( ) {double a ,b ,c ,disc ,x1,x2,p ,q; ∥disc用来存放判别式(b*b-4ac)的
值
scanf(“%1f%1f%1f”,&a,&b,&c); ∥输入双精度变量型的值要用格式声明“%1f”
disc=b*b-4*a*c;
解题思路:关键是确定计算本息和的公式。从数学知识可知,若存款 额为p0,则:
活期存款一年后本息和为p1=p0(1+r1)。 一年期定期存款,一年后本息和为p2=p0(1+r2)。 两次半年定期存款,一年后本息和为p3=p0(1+r3/2)(1+r3/2)。 画出N-S流程图,见图3.2。
图3.2
任务3.1 顺序程序设计举例
任务3.2 C语句概述
⑸ 复合语句。可以用{ }把一些语句和声明括起来成为复合语句(又称语 句块)。例如下面是一个复合语句:
C语言学习_C如何在一个文件里调用另一个源文件中的函数
C语言学习_C如何在一个文件里调用另一个源文件中的
函数
在C语言中,一个源文件可以被其他源文件调用,这种调用关系可以
通过函数的原型和函数的定义来实现。下面将介绍在一个文件中如何调用
另一个源文件中的函数。
首先,假设我们有两个源文件,一个是main.c,另一个是func.c。main.c是我们的主程序文件,而func.c包含了一些我们需要调用的函数。
1. 创建main.c文件,并在其中包含func.c文件的函数原型。我们
可以在main.c文件的开头使用#include指令来包含func.c文件的函数
原型。例如,我们在main.c文件中写入以下代码:
```
#include "func.c"
int mai
int result = add(10, 20);
printf("The result is: %d\n", result);
return 0;
```
2. 在func.c文件中定义函数。在func.c文件中,我们需要定义在main.c中调用的函数。例如,我们在func.c文件中定义一个名为add的
函数:
```
// func.c
int add(int a, int b)
return a + b;
```
3. 编译并运行程序。在命令行中使用以下命令来编译main.c和func.c文件:
```
gcc main.c -o main
```
运行生成的可执行文件main:
```
./main
```
输出结果将是:
```
The result is: 30
```
通过上述步骤,我们在main.c文件中成功调用了func.c文件中的函数。
java源文件编译
java源文件编译
Java源文件编译是将Java源代码转换成字节码的过程,以便在虚拟机中运行。下面是Java源文件编译的步骤:
1.编写Java源代码,保存为.java文件。
2.使用javac命令将.java文件编译成.class文件。例如,使用以下命令编译HelloWorld.java文件:
javac HelloWorld.java
3.编译后会生成与.java文件同名的.class文件,例如上面的命令会生成HelloWorld.class文件。
4.在虚拟机中运行.class文件,例如使用以下命令运行HelloWorld.class文件:
java HelloWorld
5.如果代码中存在错误,编译时会提示错误信息,需要修改错误后重新编译。
6.可以使用多个Java源文件,编译时需要同时指定所有源文件,例如:
javac File1.java File2.java File3.java
7.可以使用包来组织Java源文件,需要在源文件中使用package关键字指定包名,例如:
package com.example;
public class HelloWorld {
public static void main(String[] args) {
System.out.println('Hello, world!');
}
}
8.需要将源文件放置在对应的目录中,例如上面的示例需要将HelloWorld.java文件放置在com/example目录下,然后在该目录下编译和运行:
javac com/example/HelloWorld.java
在VS2005上编写、运行、调试C语言程序
在VS2005上编写、运行、调试C语言程序
目录
前言:关于C/C++编译器的简单介绍.............................- 2 - 1.编辑、编译与运行.........................................- 3 - 2.调试技术.................................................- 8 - 设置断点.................................................- 9 - 调试运行.................................................- 9 - 快速监视................................................- 10 - 3.小结....................................................- 13 - 附:VS2005快捷键大全期.....................................- 13 -
前言:关于C/C++编译器的简单介绍
Turbo C 2.0发布于1989年,对历史并不太长而发展却神速的IT业来说,确实是古董级的软件了。但它几乎是最后一个专门为C语言设计的开发环境,具备学习C语言的一切条件,没有任何非C语言的东西干扰初学者,所以一直被各大高校的C语言课堂采用。
C++的发展使C++的开发环境大行其道。因为C++几乎完全兼容C语言,两者无论编译器还是编辑器、调试器都可以用同一套程序实现,而且C++共享C的库函数,很多软件还是用两者混合编程实现,所以基本所有的C++环境都同时支持C语言。
头文件与源文件在c语言中应用简单示例
一、概述
C语言作为一种被广泛使用的程序设计语言,其核心概念之一就是头文件(Header File)和源文件(Source File)。头文件和源文件在C 语言中的应用非常普遍,它们的合理使用对于提高代码的可读性、可维护性和可重用性,起着非常重要的作用。本文将从头文件和源文件的概念入手,通过简单的示例帮助读者更加深入的理解并应用头文件与源文件在C语言中的重要性和用法。
二、头文件与源文件概念与作用
1. 头文件(Header File)是一种特殊的文本文件,它以“.h”为扩展名,用来包含要被其他文件引用的声明和定义,通常包含函数原型、宏定义、数据结构等内容。当程序需要使用某些外部的函数或数据结构时,可以通过#include指令引用相应的头文件。
2. 源文件(Source File)是包含C语言源代码的文件,通常以“.c”为扩展名。源文件包含了程序的实际代码,其中定义了各种函数、变量、数据结构等。源文件中也可以通过#include指令引用头文件,以便在源文件中使用头文件中声明的函数和数据结构。
三、头文件的编写与应用
1. 定义头文件的格式
头文件通常包括以下内容:
- 头文件保护宏(Header Guard):用来防止头文件被多次引用的问题,通常采用#ifndef、#define和#endif三个宏来实现;
- 函数原型:声明函数的名称、返回类型和参数列表,以便在源文件中使用;
- 宏定义:定义一些常量和宏,方便程序中的代码使用。
2. 编写简单的头文件示例
以一个简单的数学计算为例,定义一个头文件math.h包含两个函数的声明:
上机实践_Java程序设计精编教程(第3版)
1.7 上机实践
1.实验目的
本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序
2.实验要求
编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”
3.程序模板
请按模板要求,将【代码】替换为Java程序代码。
Hello.java
public class Hello {
public static void main (String args[ ]) {
【代码1】//命令行窗口输出"你好,很高兴学习Java"
Student zhang=new Student ();
zhang.speak();
}
}
class Student {
void speak() {
【代码2】//命令行窗口输出"We are students"
}
}
294
2.8 上机实践
1.实验目的
熟悉Java应用程序的基本结构,并能联合编译应用程序所需要的类。
2.实验要求
编写3个源文件:MainClass.java、A.java和 B.java,每个源文件只有一个类。MainClass.java含有应用程序的主类(含有main方法),并使用了A和B。将3个源文件保存到同一目录中,例如c:\1000,然后编译MainClass.java。程序运行参考效果如图2.8所示。
3.程序模板
请按模板要求,将【代码】替换为Java程序代码。
MainClass.java
public class MainClass {
public static void main (String args[ ]) {
Python程序设计案例教程第1章Python语言快速入门
【例1-5】在窗体中显示一幅图像。
编写源程序如下:
import tkinter top = tkinter.Tk() img = tkinter.PhotoImage(file = 'dukou.gif') label1 = tkinter.Label(image = img, height = 390, width = 330) label1. pack() top.mainloop() 将其保存为ex1_5.py,并在同一文件夹 中事先存放了图像文件dukou.gif。 运行程序:
下面编写一个最简单的python程序用记事本或其他纯文本编辑器输入下列语句不能使用msword之类的文字处理软件如图16所示
第1章 Python语言快速入门
1.1 Python的安装与配置
汇编语言程序设计 实验一
实验一汇编语言程序设计基础
汇编语言程序结构
一、实验目的
1.掌握汇编语言程序上机过程。
2.掌握汇编语言结构。
3.学习汇编语言的伪操作。
4.了解汇编程序、连接程序、DOS系统装入和返回功能。
5.掌握用TDEBUG调试汇编语言程序的方法
二、实验任务
1.编写完整的汇编语言程序
(1)定义一个数组,数组的内容为1~10,求出数组元素的和,放入变量sum中。
(2)编写程序计算1234H+5678H,结果放入变量reesult。
(3)编写程序计算12345678H+91012334H,结果放入变量reesult。
2.伪操作学习
编辑下列源文件:
data SEGMENT
var0 DB 10101010B,‘TsingHua’
var1 DW ‘efgh’
var2 DB -374,-1
var3 DW -1,9080H
var4 DD ffeeddccH
data ENDS
code SEGMENT
ASSUME CS:code,DS:data
start: MOV DS,data
MOV CX,var0
LEA AL,var1
code ENDS
END start
汇编该文件,据提示说明出错语句的错误原因。
修改程序中的错误,在TDEBUG下查看变量var0~var4在内存中的存放情况。
三、实验说明
1.了解汇编程序、连接程序、DOS的装入和返回功能。
2.汇编语言程序的上机过程
(1)建立汇编语言程序源文件。可使用任何一个文本编辑器(如)编辑源文件,源文件,源文件的扩展名通常取为.asm。
(2)汇编文件,形成目标模块。汇编程序的使用masm。
C语言源程序至可执行文件步骤
C/C++程序编译步骤如何生成可执行文件
电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计
算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。想象一下老前辈们在打孔机面前数着一个一个孔的情景,嘘,小声点,你的惊吓可能使他们错过了一个孔,结果可能是导致一艘飞船飞离轨道阿。
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文
字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“MO V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。因为汇编指令和机器语言之间有着一一对应的关系,这可比英译汉或汉译英简单多了。
高级语言是偏向人,按照人的思维方式设计的,机器对这些可是莫名奇妙,不知所谓。鱼与熊掌的故事在计算机语言中发生了。于是必须要有一个桥梁来衔接两者,造桥可不是一件简单的事情。当你越想方便,那桥就得越复杂。那高级语言是如何变成机器语言的呢,这个过程让我慢慢道来。
编译:将源代码转换为机器可认识代码的过程。编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件1.编译预处理读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:
《程序设计基础(C++)》实验教程及完整答案
《程序设计基础》实验教程
对于从事计算机行业的人员来说,设计能力是最主要的基本功之一。入门课程《程序设计基础》的学习效果将直接关系到编程能力的掌握和提高以及后续课程的学习。然而,实践证明,许多初学者在学习这门课程时的效果并不理想。对初学者来说,如何学好本课程?首先,要理解教材中所给出的语法描述,并学会按语法规定去编写指定问题的求解程序。经过这样的多次反复,初学者就可以找到编程的感觉。除了要学好理论知识外,更重要的一点是要到计算机上去验证,因为只有实践才是检验真理的标准。只有通过到计算机上去实践,才能发现学习中存在的问题,巩固所学知识,加强解决实际问题的能力,增强信心。因此,《程序设计基础》课程的上机实验是本课程必不可少的实践环节,必须加以重视。
本课程上机实验的目的是使学生熟悉用高级语言解决实际问题的全过程,加深对语言的理解,得到程序设计基本方法和能力的训练。在独立编写程序、独立上机调试程序的同时,真正能用高级语言这个工具去解决实际问题,对计算机学科的相关知识有所了解,从而为后续课程的学习奠定良好的基础。
本实验指导所用环境是Visual C++ 6.0及以上版本。考虑到本课程的内容和特点,设置了十四个实验,每次实验需要两至三小时,分别侧重于教材中的一个方面,其中标有“*”号的习题的综合性较强,可供学有余力的学生选择。实验时也可根据具体情况做适当调整。虽然可能由于课时和机时限制等原因而不能在实验课时内全部得到安排,但还是建议学生能将其中的每个实验都能认真做一遍,因为这些实验都是学习本课程所必需的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在源文件中编写程序如下
#include "a.h"
Ca::Ca()
{}
Ca::~Ca()
{}
bool Ca::Read_a()
{
CFileDialog dlg(true);
dlg.DoModal();
path=dlg.GetPathName();
FILE *fpr;
fpr=fopen(path,"r");
fscanf(fpr,"%s",flag);
if(strcmp(flag,"a_line2")!=0)
{printf("读入的不是附和导线文件"); return false;
}
fscanf(fpr,"%d",&nf);
nz=nf;
nw=nz-2;
nb=nz-1;
fscanf(fpr,"%lf%lf%lf",&XA,&Y A,&AZ1); fscanf(fpr,"%lf%lf%lf",&XB,&YB,&AZ2); for(int i=0;i fscanf(fpr,"%lf%lf",&f[i],&s[i]); fscanf(fpr,"%lf",&f[nb]); return true; } void Ca::Proc_a() {for(int j=0;j f[j]=angle_to_radio(f[j]); double fb=0.0; for(int i=0;i fb+=f[i]+180; fb=fb+AZ1-AZ2; double a0; a0=60*sqrt(nf); if(fb>a0) {AfxMessageBox("角度闭合差超限!"); return;} double b0,az[10]; b0=-1/nf*fb; for(i=0;i az[0]=AZ1; for(i=1;i<=nf;i++) az[i]=az[i-1]+f[i]+180; if(fabs(az[nf]-AZ2>1)) {AfxMessageBox("角度闭合差分配错误!"); return;} double fx=0.0; double fy=0.0; double S=0.0; double fs,k,vx[10],vy[10],dx[10],dy[10]; for(i=0;i { dx[i]=s[i]*cos(az[i+1]); dy[i]=s[i]*sin(az[i+1]); fx=fx+dx[i]; fy=fy+dy[i]; S=S+s[i];} fx=fx+XA-XB; fy=fy+YA-YB; fs=sqrt(fx*fx+fy*fy); k=fs/S; if(k>1/2000) {AfxMessageBox("导线相对全长闭合差超限!"); return;} for(i=0;i {vx[i]=-s[i]/S*fx; vy[i]=-s[i]/S*fy; dx[i]=dx[i]+vx[i]; dy[i]=dy[i]+vy[i];} x[0]=XA;y[0]=YA; for(i=1;i<=nb;i++) {x[i]=x[i-1]+dx[i]; y[i]=y[i-1]+dy[i];} if(fabs(x[nb]-XB)>0.001 ||fabs(y[nb]-YB)>0.001) { AfxMessageBox("坐标增量闭合差分配错误!"); return; }} double Ca::angle_to_radio(double angle) {int dd,ff; double mm; double a1,b,c,d; dd=int(angle); a1=angle-dd; ff=int(a1*100); b=a1*100-ff; mm=b*100; c=dd+ff/60.0+mm/3600.0; d=c*pi/180; return d;} 在头文件中编写程序如下 public: bool Read_a(); void Proc_a(); void Write_a(); public: int nz,nw,nb,nf; char flag[10]; CString path; double XA,YA,AZ1; double XB,YB,AZ2; double s[10],f[10],x[10],y[10]; double angle_to_radio(double angle); };