测绘程序设计实验报告Word下载.docx
- 文档编号:16432968
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:86
- 大小:522.61KB
测绘程序设计实验报告Word下载.docx
《测绘程序设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《测绘程序设计实验报告Word下载.docx(86页珍藏版)》请在冰豆网上搜索。
但只是课本上的知识是不够的,我们应该将从课本上学到的理论知识应用到实践中,通过不断的实践,在实践中发现错误解决错误,并不断创新,最后能熟练的运用所学的知识,充分掌握这种工具。
C语言知识博大精深,有必要对C语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。
想学的更深更透彻的话就必须进一步掌握运用C进行程序设计的能力;
进一步理解和运用面向过程程序设计的思想和方法;
初步掌握开发一个小型实用系统的基本方法;
学会调试一个较长程序的基本方法;
学会利用互联网查找相关的知识并学习;
学海之路何其宽广,有必要让我们孜孜不倦的求索下去。
一、实验目的
C语言程序设计实习是在学习《C语言程序设计》理论知识的基础上进行的实践教学环节,其目的是培养我们具有初步的C语言程序设计、编程、调试和排除C语言程序语法、逻辑错误的能力。
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
在实习过程中,我们要认真复习基本概念,独立编写程序,并上机调试运行,培养自己发现程序中的错误、改正错误以使程序能正确运行的能力。
经验丰富的人,当编译时出现“出错信息”时,能很快地判断出错误所在,并改正之。
而缺乏经验的人即使在系统给出明确出错提示信息下也往往找不出错误而求救于别人。
对于我们来说,不仅要了解和熟悉有关理论和方法,还要求自己动手实现,要求会编写程序并上机调试通过。
因此调试程序本身是程序设计课程的一个重要内容和基本要求,应给予充分的重视。
调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“意会”难以“言传”。
调试程序的能力,是学完《C语言程序设计》之后,我们应当掌握的一项基本功。
因此,千万不要在程序通过后就认为完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等,甚至于“自设障碍”,即把正确的程序改为有错的,如用scanf函数输入变量时,漏写“&
”符号,使数组下标越界,使整数溢出等),观察和分析所出现的情况,并认真、及时总结。
这样的学习是灵活主动的学习而不是呆板被动的学习,才会有真正的收获。
因此,我们的实习目的可综合的概括为:
1.熟悉TC20、TC30和VC++6.0的运行环境。
2.了解在TC20、TC30和VC++6.0上如何编辑、编译、连接和运行一个C程序。
3.熟练使用各种C语言的数据结构及类型、运算符与表达式。
4.熟练掌握格式输入与格式输出函数的使用。
5.通过运行简单的C程序,初步了解C源程序的特点,初步掌握查错和排错的技能。
二、实验环境
PC微机
Windows操作系统
TurboC3.0与VC++6.0程序集成环境
三、TurboC3.0与VC++6.0的熟悉与操作
(一)TurboC3.0
1.在安装TurboC编译系统基础上,则在DOS命令状态下键入命令tc。
进入TurboC集成环境后,首先在屏幕上显示TurboC主菜单窗口。
在该窗口,有8个菜单条目。
每一个菜单的意义如下:
File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS。
Edit建立、编辑源文件。
Run控制运行程序。
如果程序已经编译连接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation开关置为On,则可以用此菜单初始化调试阶段。
Compile编译并生成目标程序与可执行文件。
Project允许说明程序中包含哪些文件的管理条目。
Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;
也可以记录IncludeOutput及Library文件目录,保存编译任选项和从配置文件加载任选。
Debug检查、改变变量的值,查找函数,程序运行时查看调用栈。
选择程序编译时是否在执行行代码中插入调试信息。
Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点。
2.特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。
而选择Edit项目后,只是进入编辑器。
为了从主菜单中选择所需要的功能,可以用以下两种方式之一:
(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(←与→)选择需要的菜单,然后按回车(Enter)键。
(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。
例如,按Alt+F表示选择文件子菜单(File)。
当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(↑与↓)来移动该高亮度线,从而选择所需要的功能。
在菜单调用时,按Esc键后将直接返回到活动窗口。
(二)VC++6.0
1.安装和启动
运行VisualStudio软件中的setup.exe程序,选择安装VisualC++6.0,然后按照安装程序的指导完成安装过程。
2.创建工程项目
用VisualC++6.0系统建立C语言应用程序,首先要创建一个工程项目(project),用来存放C程序的所有信息。
创建一个工程项目的操作步骤如下:
进入VisualC++6.0环境后,选择主菜单“文件(File)”中的“新建(New)”选项,在弹出的对话框中单击上方的选项卡“工程(Projects)”,选择“Win32ConsoleApplication”工程类型,在“工程(Projectname)”一栏中填写工程名。
3.新建C源程序文件
选择主菜单“工程(Project)”中的“添加工程(AddtoProject)新建(New)”选项,为工程添加新的C源文件。
4.打开已存在的工程项目,编辑C源程序
进入VisualC++6.0环境后,选择主菜单“打开工作区(OpenWorkspace)”命令,在“OpenWorkspace”对话框内找到并选择要打开的工作区文件,单击“确定(OK)”按钮,打开工作区。
5.在工程项目中添加已经存在的C源程序文件
选择主菜单“打开工作区(OpenWorkspace)”命令,在“OpenWorkspace”对话框内找到并选择要打开的工作区文件,单击“确定(OK)”按钮打开工作区。
6.编译、连接和运行
(1)编译
选择主菜单“编译(Build)”中的“编译(Compile)”命令,或单击工具条上的图标,系统只编译当前文件而不调用链接器或其它工具。
输出(Output)窗口将显示编译过程中检查出的错误或警告信息,在错误信息处单击鼠标右键或双击鼠标左键,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修改。
(2)构建
选择主菜单“编译(Build)”中的“构建(Build)”命令,或单击工具条上的图标,对最后修改过的源文件进行编译和连接。
7.调试程序
在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序中的错误,系统提供了易用且有效的调试手段。
调试是一个最基本的技能,不会调试就意味着即使学会了一门语言,却不能编制出任何好的软件。
我们在前期进行编写程序时,经常会犯一些语句上的错误,熟练了过后,会犯一些逻辑上的错误,而这些错误往往是不易察觉的。
四、实验内容梗概
(一)算法
算法是编写程序的灵魂,数据是加工的对象,语言是工具。
在编译任何程序前,我们必须认真地进行思考和设计数据结构及操作步骤。
(二)数据类型、运算符和表达式
在计算及高级语言中,数据的表现形式有常量和变量。
在实习过程中,我们应当掌握数据类型、运算符和表达式,并且能在C语言实现过程中熟练的定义变量以及明确各种运算符之间的计算。
(三)三种基本结构
顺序结构、选择结构、循环结构等三种结构是C语言程序设计的三种基本结构,严格来说,所有的C程序都应由这三种基本结构组成。
开始就着重这三种基本结构的应用练习,旨在使我们对于这三种结构有一个更加深刻的理解,能够根据处理问题的需要选择不同的结构进行处理。
由于顺序结构在这三种结构中是最基本的,实际上当我们把程序中的选择结构部分和循环结构部分看作一个整体时,那么,整个程序就总是由顺序结构组成的了。
(四)函数
我们如果要用C语言进行大程序设计,一般采用模块化的思想。
其基本思想是将一个大的程序按照功能进行分割成一些模块,使每一个模块都成为功能单一、结构清晰、接口简单、容易理解的小程序。
C语言是用函数来实现这种模块化功能的。
我们用C语言设计程序,任务只有一种,就是编写函数,至少也要编写一个main()函数。
根据程序的复杂程度,还可以编写多个子函数。
在这一部分我们就通过练习进一步掌握用子函数来进行模块化程序设计的方法,熟悉子函数的调用和执行过程。
(五)数组应用
数组是一种构造数据类型,指的是一组同类型数据组成的序列,运用数组可以高效地处理很多问题。
五、实验具体内容
【实验一】算法
(一)实验目的
1.熟悉和掌握用SmartDraw软件进行流程图的绘制
2.了解流程图的格式
3.明确算法的目的
(二)实验内容
1.用流程图来表示算法
2.检查流程图的语句错误与逻辑错误
(三)实验步骤
我们以水准测量为例
1.我们在进行水准测量前,我们应该确定测量路线以及选取测量方向,然后就将水准仪整平准备测量;
2.在测量过程中,我们要对数据的可靠程度进行判断,所以在判断框中输入“d>
5?
”,表示判断视距差是否在误差范围之内;
3.当测量站数大于1后,就需要对视距差之和进行判断,如果前几站视距差之和大于限差,则需重测。
所以,在后面加上一个判断框,写上“D>
10?
”;
3.如果满足了两个判断框的条件,则进行下一站的测量;
如果不满足其中的一个条件,就需要重新进行数据测量及输入;
4.最后判断是否将整个测区测完,如果没有则继续测量,直至测完为止。
测量完成且满足限差要求,就可停止运行计算。
(四)实验总结
1.程序设计反映了利用计算机解决实际问题的全过程,具体要经过以下四个基本步骤:
分析问题,确定数学模型或方法;
设计算法,画出流程图;
选择编程工具,按算法编写程序;
调试程序,分析输出结果。
2.
为解决一个问题而采取的方法和步骤,就算法。
算法是程序设计的核心。
3.算法具有5个特性:
有穷性、确定性、有效性、要有数据输入、要有结果输出。
算法的评价标准包括:
正确性、可读性、通用性、高效率。
算法效率的度量分为时间度量和空间度量。
4.描述算法有多种不同的工具,常用的有:
流程图、结构化流程图和伪代码等。
实用结构化流程图能帮助培养良好的程序设计风格,提倡用结构化流程图表示算法。
【实验二】数据类型、运算符和表达式
1.掌握C语言的数据类型,了解C语言中数据类型的意义,熟悉如何定义整型、字符型和实型的变量,以及对它们赋值的方法。
2.掌握不同类型的数据之间赋值的规律。
3.
学会用C的有关算术运算符,以及包含这些运算符的表达式,特别是是++和—运算符的使用。
4.
掌握C语言中使用最多的一种语句——赋值语句的使用方法。
5.
掌握scanf()函数、printf()函数的调用方法,掌握各种类型数据的输入输出的方
法,能正确使用各种格式转换符。
6.掌握字符输入输出函数getchar()、putchar()函数的调用方法。
1.用printf函数来输入表达式运行结果。
2.观察实验步骤中表达式的结果。
以方位角的计算为例:
1.在明确该程序算法以及熟知各种数据类型的基础上,先确定三个变量,然后声明它们的数据类型
2.赋予那两个已经声明变量各自的初值
3.根据变量,执行判断语句,判断b是否大于180度
4.根据算法,写出表达式,并根据判断结果运行不同的表达式
5.最后用printf输出计算结果
输入程序:
intmain(){
inta12,a23,b;
a12=100,b=50;
if(b<
180)
a23=a12+b-180;
else
a23=a12-b+180;
printf("
a23=%d\n"
a23);
}
运行结果为:
1.
C语言数据类型有:
基本类型(整型、字符型、实型)、构造类型(结构体类型、公用体类型、枚举类型)、指针类型和空类型。
整型又分为段整形、基本整型和长整型三种。
整型还可以分为有符号型和无符号型。
实型分为单精度型和双精度型。
。
变量是一个用于存放数值的内存存储区,根据变量的类型不同,该存储区被分配不同字节的内存安源。
变量用标识符命名。
C程序中用到的任何变量都必须在使用前进行定义。
整形变量可以用十进制、八进制、和十六进制来表示。
转义字符占一个字节,分为以下三类:
(1)
控制输出格式的转义字符:
\n、\t、\b、\r、\f等。
(2)
控制三个特殊符号输出的转义字符:
\\、\’、\”
C语言的运算符
基本算术运算符:
+
-
*
/
%,先乘除、求余,后加减;
对于/运算,两个整数相除结果仍为整数;
%运算符只对整型数据有效。
逗号运算符的运算规则:
从左向右依次运算每一个表达式,逗号表达式的结果就是最后一个表达式的值。
6.++或—可以卸载变量之前,也可以写在变量之后。
如果对变量施加了前缀或后缀运算,并参与其他运算,则前缀运算是先改变变量的值再做运算,而后缀运算是先参与运算后改变变量的值。
自增和自减运算符的运算对象只能是变量,而不能是表达式或常量。
7.当表达式中含有不同类型的数据时,运算的数据类型默认按隐式类型转换,即从精度低的类型自动转换成精度高的类型,否则会造成精度损失。
8.
C语言中没有提供输入输出语句,在其库函数中提供了一组输入输出函数。
其中对标准输入输出设备进行格式化输入输出的函数是scanf和printf。
9.
输入函数scanf()的功能是接受键盘输入的数据给变量输出函数printf()的功能是将数据以一定格式显示输出。
(1)输出函数的一般形式为:
printf(“格式控制字符串“,输入项表)
其中格式控制字符串由格式说明符、转义序列和普通字符组成。
而一个格式说明符将引起一个输出参数项的转换与显示。
格式说明符是由%引出并以一个类型描述符结束的字符串,中间是一些可选的附加说明项。
(2)输入函数的一般形式为:
Scanf(“格式控制字符串“,输入项表)
其中格式控制字符与printf()函数中的类似,不过一般只含有简单的格式说明符;
输入项表至少有一个输入项,且必须是变量的地址(用变量名前加&
表示)
Printf()和scanf()都要求格式转换说明符与输入项在个数、顺序、类型上一一对应。
【实验三】控制语句
1.熟练掌握if、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
2.熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。
进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
1.选择结构程序设计;
2.if语句的使用;
3.使用switch语句实现多分支选择结构;
4.三种循环语句的应用;
5.循环结构的嵌套;
6.break和continue语句的使用。
(三)实验步骤
以带号计算为例
1.根据所需计算的方法分为三度带和六度带,确定程序的结构
2.定义变量,之后确定其数据类型,用scanf进行输入经度和判断标志
3.我们需要选择计算方式,如果选用三度带进行计算,则将判断标志设为0,如果选用六度带进行计算,则判断标志设为费0的数
4.用if…else…进行选择后,就进行计算
5.计算完毕后,用printf输出结果
intmain()
{
intn,m,l;
scanf("
%d%d"
&
l,&
m);
if(m==0)
n=(l+3)/6;
n=l/3;
该点位于第%d带\n"
n);
输出结果为:
以素数对的计算为例
1.在明确素数对的定义及算法的基础上,我们先确定变量个数及名称,并且声明它们的数据类型
2.然后确定用for的嵌套结构对素数对进行循环的判断、选择
3.用if结构进行判断,判断的依据是首先这个数必须是素数,即不能被除了1与它本身外的数整除,其次,需要满足的条件是这两个素数必须相差2,所以先寻找“k=(int)sqrt(j)”作为除数,然后执行“if(j%i==0)”进行判断其是否为素数,在执行”if(k2-k1==2)”判断它们是否为素数对,不满足其中的一个判断条件,则执行”break”,跳出循环
4.找出素数对之后,用printf进行输出
程序输入:
for(j=2;
j<
=lyj;
j++){
prime=1;
k=(int)sqrt(j);
for(i=2;
i<
=k;
i++){
if(j%i==0){
prime=0;
break;
}
}
if(prime){
k2=j;
{
printf("
%ld%ldisprimepairs\n"
k1,k2);
k1=k2;
}
根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构。
选择结构又可以分为单分支、双分支和多分支三种情况。
一般采用if语句实现单分支、双分支或多分支结构程序
采用嵌套if语句还可以实现较为复杂的多分支结构程序。
在嵌套if语句中,一定要弄清楚else与哪个if结合。
书写嵌套if语句往往采用缩进的阶梯式写法,目的是便于看清else与if结合的逻辑关系,但折后总写法并不能改变if语句的逻辑关系。
循环结构又称为重复结构,它可以控制某些语句重复执行,重复执行的语句称为循环体,而决定循环是否继续执行的是循环条件。
循环结构是程序设计总应用最多的结构形式,在C语言中,可用while语句、do…while语句和for语句来实现循环结构。
一般情况下,用某种循环语句写的程序段,业内呢个用另外两种循环语句实现。
While语句和for语句属于当型循环,即先判断,后执行;
而do…while语句属于直到型循环,即先执行,后判断,而无法确定循环次数的问题采用while语句或do…while语句比较自然。
有时候需要用到多重循环,又称为循环嵌套,即在循环语句的循环体内又包含另一个完整的循环结构。
循环嵌套不允许交叉。
为了避免出现无终止的循环,要注意循环结束条件的使用,也就是说在循环执行中,要修改循环变量,还要注意循环的初始条件。
分析循环第一次和最后一次执行时的情况有助于写出正确程序。
【实验四】函数
1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值
2.掌握实参与形参的对应关系以及参数之间的“值传递”的方式;
3.掌握函数的嵌套调用及递归调用的设计方法;
4.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;
5.在编程过程中加深理解函数调用的程序设计思想。
(二)实验内容
1.多模块的程序设计与调试的方法;
2.函数的定义和调用的方法;
3.用递归方法进行程序设计。
(三)实验步骤
以前方交会测量为例
1.明确前房交会测量的原理及算法
2.定义所需的变量,并确定它们的数据类型
3.用scanf输入角度、距离等数据,并且需要进行角度的判断,以保证两角之和要大于30度小于150度
4.满足条件后,就根据计算公式进行计算
5.然后用printf输出结果
6.然后再熟悉函数形式的基础上,将该程序算法的主要部分改为函数形式
7.最后运行、调试,直至输出正确的结果为止
原程序输入:
scanf("
%d%d%d%d%d%d"
x1,&
y1,&
x2,&
y2,&
a1,&
a2);
if((a1+a2)>
150&
&
(a1+a2)<
30)
printf("
overrun!
"
);
else
xp=(x1*tan(a1*PI/180)+x2*tan(a2*PI/180)+(y2-y1)*tan(a1*PI/180)*tan(a2*PI/180))/(tan(a1*PI/180)+tan(a2*PI/180));
yp=(y1*tan(a1*PI/180)+y2*tan(a2*PI/180)+(x2-x1)*tan(a1*PI/180)*tan(a2*PI/180))/(tan(a1*PI/180)+tan(a2*PI/180));
p=(%d,%d)\n"
xp,yp);
改为函数形式程序输入为:
doublem(doublex1,doublex2,doublex3,doublex4,doublex5,doublex6,doublex7,doublex8,doublex9,doublex10)
{doublel;
l=(x1*tan(x2*PI/180)+x3*tan(x4*PI/180)+(x5-x6)*tan(x7*PI/180)*tan(x8*PI/180))/(tan(x9*PI/180)+tan(x10*PI/180));
return(l);
main(){
doublex1,x2,xp,y1,y2,yp,a1,a2;
%d%%d%d%d%d"
x1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 程序设计 实验 报告