首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 范文大全
  • 古典文学
  • 职场知识
  • 中国文学
  • 公文书信
  • 外国名著
  • 寓言童话
  • 百家讲坛
  • 散文/诗歌
  • 美文欣赏
  • 礼仪知识
  • 民俗风情
  • 谜语大全
  • 名言警句
  • 测绘程序设计实验报告

    时间:2020-09-25 12:06:53 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:测绘 程序设计 实验

     测绘程序设计(C 版)

     实习报告 学号:

     201420050138 姓名:

     李阳靖 班级:

     1420501Z 专业:

     测绘工程 课程名称:

     测绘程序设计( C 及 Matlab)

     指导老师:

     肖根如

     2015 年 12 月

     测绘程序设计实验报告 2

      目录 前言 1 一、 实验目的 1 二、 实验环境 2 三、 Turbo C 3.0 与 VC++6.0 的熟悉与操作 2 四、 实验内容梗概 3 五、 实验具体内容 4 实验一算法 4 实验二数据类型、运算符和表达式 5 实验三控制语句 6 实验四函数 9 实验五数组 11 实验六结构体与共用体 12 六、 常见错误及分析 14 七、 程序调试 15 八、 实验心得与体会 17 九、 附录:实习程序设计清单 21

     测绘程序设计实验报告 3

      .、八 、- 刖言 现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地 的变化。作为新时代的大学生,我们应该不断努力学习科学文化知识,以适应社会的发展要 求,以现代化的科学知识为祖国做贡献。而 C 语言作为一种计算机语言,无疑是我们将来工 作不可缺少的一门技能,所以我们应该认真学好 C 语言。但只是课本上的知识是不够的,我 们应该将从课本上学到的理论知识应用到实践中,通过不断的实践,在实践中发现错误解决 错误,并不断创新,最后能熟练的运用所学的知识,充分掌握这种工具。

     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 .熟练掌握格式输入与格式输出函数的使用。

     测绘程序设计实验报告 4

      5 „通过运行简单的 C 程序,初步了解 C 源程序的特点 , 初步掌握查错和排错的技能 实验环境 PC 微机 Windows 操作系统 Turbo C 3.0 与 VC++6.0 程序集成环境 三、 Turbo C 3.0 与 VC++6.0 的熟悉与操作 (一)

     Turbo C 3.0 1.

     在安装Turbo C编译系统基础上,则在 DOS命令状态下键入命令tc。进入Turbo C集成环境 后,首先在屏幕上显示 Turbo C 主菜单窗口。在该窗口,有 8 个菜单条目。每一个菜单的意义 如下:

     File 处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变 工作目录),退出系统及调用 DOS。

     Edit 建立、编辑源文件。

     Run 控制运行程序。如果程序已经编译连接好,且 Debug/Source Debugging 以及 Optio n/Compiler/Code gen eratio n/OBJ Debug In formatio n 开关置为 On,则可以用此菜单初始化 调试阶段。

     Compile 编译并生成目标程序与可执行文件。

     Project 允许说明程序中包含哪些文件的管理条目。

     Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)

     及定义宏;也可以记录 Include Output 及 Library 文件目录,保存编译任选项和从配置文件加 载任选。

     Debug 检查、改变变量的值,查找函数,程序运行时查看调用栈。选择程序编译时是否 在执行行代码中插入调试信息。

     Break/Watch 增加、删除、编辑监视表达式,及设置、清除、执行至断点。

     2. 特别要指出的是,除了 Edit 项外,每一个菜单又有对应的子菜单。而选择 Edit 项目后,只 是进入编辑器。

     为了从主菜单中选择所需要的功能,可以用以下两种方式之一:

     (1 )按 F10 键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键 (J 与-)选择需要的菜单,然后按回车(Enter)键。

     (2)直接按 Alt+主菜单条目中的首字母(分别为 F,E, R,C, P,O, D,B),此时就会出 现相应的子菜单。例如,按 Alt+F 表示选择文件子菜单(File)。当出现子菜单时,其中某个条 目是高亮度的,此时可以利用上、下光标移动键 (T 与 J)

     来移动该高亮度线,从而选择所 需要的功能。在菜单调用时,按 Esc 键后将直接返回到活动窗口。

     (二)

     VC++6.0 1 „安装和启动 运行 Visual Studio 软件中的 setup.exe 程序,选择安装 Visual C++ 6.Q 然后按照安装程序 的指导完成安装过程。

     2. 创建工程项目 用 Visual C++6.0 系统建立 C 语言应用程序,首先要创建一个工程项目(project),用来存放 C 程序的所有信息。创建一个工程项目的操作步骤如下:

     测绘程序设计实验报告 5

      进入 Visual C++6.0 环境后,选择主菜单“文件(File)”中的“新建(New)”选项,在弹 出的对话框中单击上方的选项卡“工程(Projects)”,选择“ Win 32 Con sole Application”工程 类型,在“工程(Project name)” 一栏中填写工程名。

     3. 新建 C 源程序文件 选择主菜单“工程(Project)”中的“添加工程(Add to Project)

     新建(New)”选项, 为工程添加新的 C 源文件。

     4. 打开已存在的工程项目,编辑 C 源程序 进入 Visual C++6.0 环境后,选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace"对话框内找到并选择要打开的工作区文件,单击“确定(OK)” 按钮,打开工 作区。

     5. 在工程项目中添加已经存在的 C 源程序文件 选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace"对话框内 找到并选择要打开的工作区文件,单击“确定(OK”按钮打开工作区。

     6. 编译、连接和运行 (1)

     编译 选择主菜单“编译(Build)”中的“编译(Compile)”命令,或单击工具条上的图标,系 统只编译当前文件而不调用链接器或其它工具。输出( Output)窗口将显示编译过程中检查 出的错误或警告信息,在错误信息处单击鼠标右键或双击鼠标左键,可以使输入焦点跳转到 引起错误的源代码处大致位置以进行修改。

     (2)

     构建 选择主菜单“编译(Build)”中的“构建(Build)”命令,或单击工具条上的图标,对最 后修改过的源文件进行编译和连接。

     7. 调试程序 在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序中的错误, 系统提供了易用且有效的调试手段。调试是一个最基本的技能,不会调试就意味着即使学会 了一门语言,却不能编制出任何好的软件。我们在前期进行编写程序时,经常会犯一些语句 上的错误,熟练了过后,会犯一些逻辑上的错误,而这些错误往往是不易察觉的。

     四、实验内容梗概 (一)

     算法 算法是编写程序的灵魂,数据是加工的对象,语言是工具。在编译任何程序前,我们必 须认真地进行思考和设计数据结构及操作步骤。

     (二)

     数据类型、运算符和表达式 在计算及高级语言中,数据的表现形式有常量和变量。在实习过程中,我们应当掌握数 据类型、运算符和表达式,并且能在 C 语言实现过程中熟练的定义变量以及明确各种运算符 之间的计算。

     (三)

     三种基本结构 顺序结构、选择结构、循环结构等三种结构是 C 语言程序设计的三种基本结构,严格来 说,所有的 C 程序都应由这三种基本结构组成。开始就着重这三种基本结构的应用练习,旨 在使我们对于这三种结构有一个更加深刻的理解,能够根据处理问题的需要选择不同的结构 进行处理。由于顺序结构在这三种结构中是最基本的,实际上当我们把程序中的选择结构部 分和循环结构部分看作一个整体时,那么,整个程序就总是由顺序结构组成的了 (四)

     函数

     测绘程序设计实验报告 6

      我们如果要用 C 语言进行大程序设计,一般采用模块化的思想。其基本思想是将一个大 的程序按照功能进行分割成一些模块, 使每一个模块都成为功能单一、结构清晰、接口简单、 容易理解的小程序。C 语言是用函数来实现这种模块化功能的。我们用 C 语言设计程序,任 务只有一种,就是编写函数,至少也要编写一个 main()函数。根据程序的复杂程度,还可以 编写多个子函数。在这一部分我们就通过练习进一步掌握用子函数来进行模块化程序设计的 方法,熟悉子函数的调用和执行过程。

     (五)

     数组应用 数组是一种构造数据类型,指的是一组同类型数据组成的序列,运用数组可以高效地处 理很多问题。

     五、实验具体内容 【实验一】算法 (一)

     实验目的 1. 熟悉和掌握用 SmartDraw 软件进行流程图的绘制 2. 了解流程图的格式 3•明确算法的目的 (二)

     实验内容 1•用流程图来表示算法 2. 检查流程图的语句错误与逻辑错误 (三)

     实验步骤 我们以水准测量为例 1•我们在进行水准测量前,我们应该确定测量路线以及选取测量方向, 然后就将水准仪整 平准备测量; 2•在测量过程中,我们要对数据的可靠程度进行判断,所以在判断框中输入 “d>5 ”,表 示判断视距差是否在误差范围之内; 3•当测量站数大于 1 后,就需要对视距差之和进行判断,如果前几站视距差之和大于限 差,则需重测。所以,在后面加上一个判断框,写上 “D>1? ”; 3•如果满足了两个判断框的条件,则进行下一站的测量;如果不满足其中的一个条件,就 需要重新进行数据测量及输入; 4•最后判断是否将整个测区测完,如果没有则继续测量,直至测完为止。测量完成且满足 限差要求,就可停止运行计算。

     测绘程序设计实验报告 7

     水卅池儿卜

      (四) 实验总结 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 输出计算结果

     测绘程序设计实验报告 8

      输入程序:

     int mai n(){ int a12,a23,b; a12=100,b=50; if(b<180) a23=a12+b-180; else a23=a12-b+180; prin tf("a23=%d\n",a23); } 运行结果为:

     F ... „„„ 一一. 一 —— m I • ■"C:\U5er5\Admi nistr^tor^[?e5ktcip\2014200 5 0130- 李阳第亡 b 」 g\20142005[)138 188 葩 a23=-30 Press k 耳 y V Q

     continue (四)实验总结 1. C 语言数据类型有:基本类型(整型、字符型、实型)、构造类型(结构体类型、公用 体类型、枚举类型)、指针类型和空类型。

     整型又分为段整形、基本整型和长整型三种。整型 还可以分为有符号型和无符号型。实型分为单精度型和双精度型。

     。

     2. 变量是一个用于存放数值的内存存储区,根据变量的类型不同,该存储区被分配不同 字节的内存安源。变量用标识符命名。

     C 程序中用到的任何变量都必须在使用前进行定义。

     3. 整形变量可以用十进制、八进制、和十六进制来表示。

     4. 转义字符占一个字节,分为以下三类:

     (1)

     控制输出格式的转义字符:\n、\t、\b、\r、\f 等。

     (2)

     控制三个特殊符号输出的转义字符:

     、"” 5. C 语言的运算符 (1)

     基本算术运算符:+- * / %,先乘除、求余,后加减;对于/运算,两个整数相除结 果仍为整数; % 运算符只对整型数据有效。

     (2)

     逗号运算符的运算规则:从左向右依次运算每一个表达式,逗号表达式的结果就是 最后一个表达式的值。

     6. ++或一可以卸载变量之前,也可以写在变量之后。如果对变量施加了前缀或后缀运算, 并参与其他运算,则前缀运算是先改变变量的值再做运算,而后缀运算是先参与运算后改变 变量的值。自增和自减运算符的运算对象只能是变量,而不能是表达式或常量。

     7. 当表达式中含有不同类型的数据时,运算的数据类型默认按隐式类型转换,即从精度低 的类型自动转换成精度高的类型,否则会造成精度损失。

     8. C 语言中没有提供输入输出语句,在其库函数中提供了一组输入输出函数。其中对标 准输入输出设备进行格式化输入输出的函数是 scanty printf 。

     9. 输入函数 scanf ()的功能是接受键盘输入的数据给变量输出函数 printf ()的功能是 将数据以一定格式显示输出。

     (1 )输出函数的一般形式为 :

     printf( “格式控制字符串“,输入项表 )

     其中格式控制字符串由格式说明符、转义序列和普通字符组成。

     而一个格式说明符将引起一个输出参数项的转换与显示。格式说明符是由 % 引出并以一个 类型描述符结束的字符串,中间是一些可选的附加说明项。

     (2)输入函数的一般形式为:

     测绘程序设计实验报告 9

      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.

     定义变量,之后确定其数据类型,用 sca nf 进行输入经度和判断标志 3.

     我们需要选择计算方式,如果选用三度带进行计算,则将判断标志设为 0,如果选用六 度带进行计算,则判断标志设为费 0 的数 4. 用 if…else!行选择后,就进行计算 5. 计算完毕后,用 printf 输出结果 输入程序:

     int mai n() { int n,m,l; sca nf("%d%d",&l,&m); if(m==0) n=(l+3)/6; else n=l/3; printf("该点位于第%d 带\n",n); } 输出结果为:

     ” "OlUse rs\/\dmini 5tr ato r\D eskt □ D 二 4 2 005 013S -李汨营"

     测绘程序设计实验报告 10

      pu 该点位干第初带 Pr ess any key to continue 以素数对的计算为例 1•在明确素数对的定义及算法的基础上,我们先确定变量个数及名称,并且声明它们的数 据类型 2. 然后确定用 for 的嵌套结构对素数对进行循环的判断、选择 3•用 if 结构进行判断,判断的依据是首先这个数必须是素数,即不能被除了 1 与它本身外 的数整除,其次,需要满足的条件是这两个素数必须相差 2,所以先寻找“k=(int)sqrt(j)作为除 数,然后执行“if(j%i==O 进行判断其是否为素数,在执行” if(k2-k1==2 判断它们是否为素数对, 不满足其中的一个判断条件,则执行” break”跳出循环 4. 找出素数对之后,用 printf 进行输出 程序输入:

     for(j=2;jv=lyj;j++){ prime=1; k=(i nt)sqrt(j); for(i=2;i<=k;i++){ if(j%i==0){ prime=0; break; } } if(prime){ k2=j; { prin tf("%ld %ld is prime pairs\n",k1,k2); } k 仁 k2; } } 输出结果为:

     i

     "C:\User5\Admi nkt r3tor\D? slctopXJ 0142 DO 5D1S 8-李 1 日靖、 M1417 2051419 is prime pairs 05 丄 459 2051461 is BI *

     ime walvs (四)实验总结 1. 根据某种条件的成立与否而采用不同的程序段进行处理的程序结构称为选择结构。

     选择 结构又可以分为单分支、双分支和多分支三种情况。一般米用 if 语句实现单分支、双分支或 多分支结构程序 2. 采用嵌套 if 语句还可以实现较为复杂的多分支结构程序。

     在嵌套 if 语句中,一定要弄清 楚else 与哪个 if 结合。书写嵌套 if 语句往往采用缩进的阶梯式写法,目的是便于看清 else 与 if 结合的逻辑关系,但折后总写法并不能改变 if 语句的逻辑关系。

     3. 循环结构又称为重复结构,它可以控制某些语句重复执行,重复执行的语句称为循环体,

     测绘程序设计实验报告 11

      而决定循环是否继续执行的是循环条件。循环结构是程序设计总应用最多的结构形式,在 C 语言中,可用 while 语句、do…while 语句和 for 语句来实现循环结构。

     一般情况下,用某种循环语句写的程序段,业内呢个用另外两种循环语句实现。

     While 语 句和 for 语句属于当型循环,即先判断,后执行;而 do…while 语句属于直到型循环,即先执 行,后判断,而无法确定循环次数的问题采用 while 语句或 do…while 语句比较自然。

     4. 有时候需要用到多重循环,又称为循环嵌套,即在循环语句的循环体内又包含另一个完 整的循环结构。循环嵌套不允许交叉。

     5. 为了避免出现无终止的循环,要注意循环结束条件的使用,也就是说在循环执行中,要 修改循环变量,还要注意循环的初始条件。分析循环第一次和最后一次执行时的情况有助于 写出正确程序。

     【实验四】函数 (一) 实验目的 1. 掌握 C 函数的定义方法、函数的调用方法、参数说明以及返回值 2. 掌握实参与形参的对应关系以及参数之间的“值传递”的方式; 3. 掌握函数的嵌套调用及递归调用的设计方法; 4. 掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法; 5. 在编程过程中加深理解函数调用的程序设计思想。

     (二) 实验内容 1. 多模块的程序设计与调试的方法; 2. 函数的定义和调用的方法; 3. 用递归方法进行程序设计。

     (三) 实验步骤 以前方交会测量为例 1. 明确前房交会测量的原理及算法 2. 定义所需的变量,并确定它们的数据类型 3.

     用scanf 输入角度、距离等数据,并且需要进行角度的判断,以保证两角之和要大于 30 度小于 150 度 4. 满足条件后,就根据计算公式进行计算 5. 然后用 printf 输出结果 6. 然后再熟悉函数形式的基础上,将该程序算法的主要部分改为函数形式 7. 最后运行、调试,直至输出正确的结果为止 原程序输入:

     sca nf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2,&a1,&a2); if((a1+a2)>150 && (a1+a2)<30) prin tf("overru n! ”) ; else xp=(x1*ta n(a1*PI/180)+x2*ta n(a2*PI/180)+(y2- y1)*ta n(a1*PI/180)*ta n(a2*PI/180))/(ta n( a1*PI/180)+ta n(a2*PI/180)); yp=(y1*ta n(a1*PI/180)+y2*ta n(a2*PI/180)+(x2- x1)*ta n(a1*PI/180)*ta n(a2*PI/180))/(ta n( a1*PI/180)+ta n(a2*PI/180)); prin tf("p=(%d,%d)\n",xp,yp);

     测绘程序设计实验报告 12

      } 改为函数形式程序输入为:

     double m(double x1, double x2, double x3, double x4,double x5,double x6,double x7,double x8,double x9,double x10) {double l; l=(x1*ta n(x2*PI/180)+x3*ta n( x4*PI/180)+(x5- x6)*ta n(x7*PI/180)*ta n(x8*PI/180))/(ta n(x9*PI/180)+ta n(x10*PI/180)); return(l);} mai n(){ double x1,x2,xp,y1,y2,yp,a1,a2; sea nf("%d%%d%d%d%d", &x1, &y1, &x2, &y2,&a1,&a2); if((a1+a2)>150||(a1+a2)<30) prin tf("overru n! ”) ; else Xp=m(x1,a1,x2,a2,y2,y1,a1,a2,a1,a2); yp=m(y1,a1,y2,a2,x2,x1,a1,a2,a1,a2); prin tf("p=%d\n,%d\n",xp,yp); } 结果输出为:

     -"C:\U5er5\Administrator\De5lctcp\20142-0C50138-李阳第 I 讪 0 1000 2H0B 2S9B 45 45 p=<4202 r -8585?2463> Press any key to cont inue 以坐标正算为例 1•明确坐标正算的算法 2•声明变量 PI (圆周率)以及其他变量,并确定它们的数据类型 3. 用 scanf 输入第一个点的坐标以及两点之间的距离和角度 4•然后进行 “x2=x1+d*cos(a*PI/180) y2=y1+d*sin(a*PI/180)的计算 5•计算完成后用 printf 输出计算结果 6•然后将程序算法的主要部分 “x2=x1+d*cos(a*PI/180) y2=y1+d*sin(a*PI/180)改为函数的 形式 7. 最后运行、调试,直至输出正确的结果为止 原程序输入为:

     mai n(){ float x1,y1,d,a; float x2,y2; sea nf("%f%f%f%f", &x1, &y1,&d,&a); x2=x1+d*cos(a*PI/180); y2=y1+d*si n(a*PI/180); printf("第二个点的坐标是:(%f,%f)\n",x2,y2); } 改为函数形式程序输入为:

     测绘程序设计实验报告 13

      double w(double x,double y,double z) {double k; k=x+y*cos(z*PI/180); return(k);} mai n(){ float x1,x2,y1,y2,d,a; sca nf("%f%f%f%f", &x1, &y2,&d,&a); x2=w(x1,d,a); y2=w(y2,d,a); printf("第二个点的坐标是:(%f\n,%f\n)",x2,y2); } 输出结果为:

     "CAU^ersXAdm ini^t rate r\De5 ktop\20145OO5&15S-季阳塔\ las 100 as 軍二个点的坐标是; <136715 八 5 翻■嗣 1443> Press any key to continue (四) 实验总结 1. 函数是利用 C 语言进行结构化程序设计的最基本的概念, C 程序是由函数组成的。可 以把一个复杂的程序分成多个模块进行设计,而每个模块是一个函数。

     main ()是 C 程序中 最重要的函数,程序运行从函数 main ()开始,也在函数 main ()结束。

     2. 函数定义的一般形式为:

     函数符函数名([形式参数说明]){ 声明与定义部分 语句部分} 类型符指明函数返回值的类型。如果函数定义是不指明类型,系统隐含指定为 int 型。形 式参数有两个作用:其一表示将从主调函数中接收哪些类型的信息,其二在函数体中形式参 数可以被引用。

     3. 函数返回值由 return 语句实现,return 语句的格式为:return 表达式; 函数先将表达式的值转换为所定义的类型,然后返回到主调函数中的调用表达式。

     4. 函数调用是通过函数调用表达式进行,当函数被调用时,计算机才为形参分配存储空 间。在调用函数时,函数之间的参数传递也称为虚实结合。形参从相应的实参得到值,称为 传值调用方式。实参与形参在个数、类型上要匹配。

     5. 函数调用前应该已经定义或声明。

     6. 函数的形参及函数内定义的变量称为局部变量,其作用范围在定义它的函数或复合语 句内。在函数外部定义的变量称为全局变量,其作用域是从定义或声明处到整个程序结束。

     7. 一个函数被调用的过程中可以调用另一个函数,即函数调用允许嵌套。

     【实验五】数组 (一)实验目的 1. 掌握数组的基本概念,包括:数组的定义、数组的类型、数组的初始化、数组的赋值、 数组元素下标的范围、数组元素的正确以及引用数组元素的输入 /输出。

     2•掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串及其 特点。

     测绘程序设计实验报告 14

      3. 掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。

     4•掌握与数组相关的算法,包括排序算法和查找算法等。

     (二) 实验内容 有关数组的程序设计 (三) 实验步骤 以坐标反算为例 1•明确坐标反算的算法 2•声明变量 PI (圆周率),并用普通程序将其表示出来 3•最后将其改编为函数形式的程序 原程序输入为:

     void mai n(){ float x1,x2,y1,y2,d,a; sea nf("%f%f%f%f", &x1, &y1, &x2, &y2); a=ata n((y2-y1)/(x2-x1))*180/PI; d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); prin tf("a=%f\nd=%f\n",a,d); } 改为数组形式程序输入为:

     void mai n(){ int i; float a[4],d,m; for(i=1;i<5;i++) scan f("%d",&a[i]); m=ata n( (a[4]-a[3])/(a[2]-a[1])); d=sqrt((a[2]-a[1])*(a[2]-a[1])+(a[3]-a[4])*(a[4]-a[3])); prin tf("a=%f\nd=%f\n",m,d); } 输出结果为:

     I * C:\U5jers\Ad mini strat o r\Des lrtop\2014200SO 138 -李阳笔 1130 100 185 150 a=30-465473 d=78.615415 Press anv to cant in tie (四)实验总结 1. 数组命名要符合标识符的命名规则。

     2•数组名后的括号必须是方括号,不能是圆括号。

     3. 数组长度必须是正整数 , 可以是个表达式,但不能有变量,C 语言不支持动态数组。

     4•数组长度表示数组中元素的个数。

     5. 数组元素的下标从 0 开始数,所以最大下标是数组的长度减 1。

     6. C 语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据 类型为字符型的数组。

     【实验六】结构体与共用体 (一) 实验目的 1.

     理解结构体类型的含义;掌握结构体类型变量的定义方法和使用; 结构体类型变量的说 明以及初始化方法。

     测绘程序设计实验报告 15

      2. 理解结构体与数组的区别;掌握结构体类型数组的概念、定义和使用方法。

     3•熟悉链表的概念,初步学会对链表进行操作。

     4•初步了解共用体的概念与使用。

     (二) 实验内容 有关结构与共同体的程序设计 (三) 实验步骤 以三角高程计算为例 1•明确三角高程计算的算法 2•声明变量,用 seanf 进行输入,并用普通程序的结构将其算法表示出来 3•将原程序改编为结构体形式 原程序输入为:

     mai n(){ double HAB,HB,S,i,v,a,HA; sea nf("%lf%lf%lf%lf%lf",&S,&i,&v,&a,&H A); HAB=S*ta n(a*PI/180)+i-v ; HB=HA+S*ta n(a*PI/180)+i-v; prin tf("HAB=%f\n HA=%f\n",HAB,HB); } 改为结构体形式程序输入为:

     struct X { double S; double i; double v; double a; double HA; }N={100,1,2,45,200}; mai n(){ double S,i,v,a,HA,HAB,HB; HAB=S*ta n(a*PI/180)+i-v ; HB=HA+S*ta n(a*PI/180)+i-v; prin tf("HAB=%d\nHA=%d\n",HAB,HB); } 输出结果为:

     A 1

     "C:\Users\A dministrator\Desktop\201420050138^0^ 19Q 1 2 4S 2QQ 000367 Press anv key to cont inu# (四) 实验总结 1•结构体类型定义 结构体类型的形式为:

     struct 结构体类型名{数据类型成员名 1;... 数据类型成员名 n; }; 2•结构体变量的定义

     测绘程序设计实验报告 16

      结构体变量有三种定义形式:

     (1) 先定义结构体类型,后定义结构体变量。

     (2) 定义结构体类型的同时定义结构体变量。

     (3) 不定义结构体类型名,直接定义结构体变量。

     3•结构体变量的引用 (1) 结构体变量的初始化:许多 C 版本规定对外部或静态存储类型的结构体变量可以进行 初始化,而对局部的结构体变量则不可以,新标准 C 无此限制,允许在定义时对自动变量初 始化。

     (2) 结构体成员的引用:由于 C 语言一般不允许对结构体变量的整体引用, 所以对结构体的 引用只能是对分量的引用,结构体变量中的任一分量可以表示为:结构体变量名 •成员名 4•结构体与数组 C 语言中数组的成员可以是结构体变量, 结构体变量的成员也可以是数组。

     结构体数组有 三种定义形式:

     (1) 先定义结构体类型,后定义结构体数组。

     (2) 定义结构体类型的同时定义结构体数组。

     (3) 不定义结构体类型名,直接定义结构体变量。

     六、常见错误及分析 C 语言的最大特点是:功能强、使用方便灵活。

     C 编译的程序对语法检查并不象其它高级 语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来 了许多不便,尤其对我们这些初学 C 语言的人来说,经常会出一些连自己都不知道错在哪里 的错误。

     有时候看着有错的程序,不知该如何改起,通过对 C 的学习与实践,我积累了一些 C 编程 时常犯的错误:

     1•书写标识符时,忽略了大小写字母的区别。

     main() { int a=5; printf("%d",A); } 编译程序把 a 和 A 认为是两个不同的变量名,而显示出错信息。

     C 认为大写字母和小写字 母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

     2•忽略了变量的类型,进行了不合法的运算。

     main() { float a,b; printf("%d",a%b); } “ % ”是求余运算,得到 a/b 的整余数。整型变量 a 和 b 可以进行求余运算,而实型变量 则不允许进行“求余”运算。

     3. 将字符常量与字符串常量混淆。

     chare; c="a"; 在这里就混淆了字符常量与字符串常量, 字符常量是由一对单引号括起来的单个字符, 字 符串常量是一对双引号括起来的字符序列。

     C 规定以“”作字符串结束标志,它是由系统自 动加上的,所以字符串“ a”实际上包含两个字符:‘a"和‘\",而把它赋给一个字符变量是不 行的。

     4. 忽略了“二”与“==”的区别。

     在许多高级语言中,用“=”符号作为关系运算符“等于” 。如在 BASIC 程序中可以

     测绘程序设计实验报告 17

      写 if(a=3)then,但 C 语言中,“=”是赋值运算符,“==”是关系运算符。女口:

     if(a==3)a=b;前 者是进行比较,a 是否和 3 相等,后者表示如果 a 和 3 相等,把 b 值赋给 a。由于习惯问题, 初学者往往会犯这样的错误。

     5. 忘记加分号。

     分号是 C 语句中不可缺少的一部分,语句末尾必须有分号。

     a=1 b=2 编译时,编译程序在“ a=1 ”后面没发现分号,就把下一行“ b=2”也作为上一行语句的一 部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一 下上一行是否漏掉了分号。

     {z=x+y; t=z/100; printf("%f",t); } 对于复合语句来说,最后一个语句中最后的分号不能忽略不写。

     以及在包含结构体的程序中,很多时候会忘记花括号后面的那个分号,如果忘记了加分号, 程序就不能运行,如:

     struct Stude nt { char n ame; } 6. 多加分号。

     对于一个复合语句,如:

     {z=x+y; t=z/100; printf("%f",t); }; 复合语句的花括号后不应再加分号,否则将会画蛇添足。

     又如:

     if (a%3==0); i++; 本是如果 3 整除 a,则 I 加 1。但由于 if (a%3==0)后多加了分号,贝 U if 语句到此结束,程序 将执行 I++语句,不论 3 是否整除 a,I 都将自动加 1。再如:

     for (i=0;i<5;i++); {sca nf("%d", &x); prin tf("%d",x);} 本意是先后输入 5 个数,每输入一个数后再将它输出。由于 for()后多加了一个分号,使循 环体变为空语句,此时只能输入一个数并输出它。

     7. 输入变量时忘记加地址运算符“ & ”。

     int a,b; sca nf("%d%d",a,b); 这是不合法的。Scanf 函数的作用是:按照 a、b 在内存的地址将 a、b 的值存进去。“&a” 指a 在内存中的地址。

     在表示并列的时候,要同时使用两个 “&;即“&&否则程序调试过程会出现错误,如:

     if(x>2 & x<5) 8•输入数据的方式与要求不符。

     sea nf("%d%d",&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:

     3, 4 七、程序调试

     测绘程序设计实验报告 18

      调试概述 调试是编程过程中不可忽视的问题,对于一个复杂的程序来说,从编写到能够通过编译, 只是完成了一小部分而已。然后还要不断的调试、修改、再调试、再修改、…直到将发现的 问题都解决,程序能够稳定正确的运行为止。调试在程序设计中的地位是十分重要的。调试 是一个最基本的技能,其重要性甚至超过学习一门语言。不会调试程序就意味着即使会一门 语言,却不能编制出任何好的软件。

     常见的错误类型 (1)

     语法错误:拼写错,括号不匹配,漏写分号„…对于查出的错误(Error)必须排除, 否则程序无法运行;而警告(Warning)则应根据情况处理,否则可能产生运算误差等。

     (2)

     逻辑错误:编译无误,有时也有执行结果,但结果不符合题意。例如 scanf 的参数中 漏写地址符,if 语句、for 语句花括号位置错误等,都会导致此类错误。

     (3) 运行错误:运行结果错误也可能是由于输入数据错误、类型不匹配等造成的。例如 用户没有按照 scanf 规定的格式输入数据就会造成此类错误。

     查错的方法 (1) 先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对纸 面上的程序进行人工检查。这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的 多数错误。而这一步骤往往容易被人忽视。

     为了更有效地进行人工检查,所编的程序应注意力求做到以下几点:

     A、 应当采用结构化程序方法编程,以增加可读性; B、 并尽可能多加注释,以帮助理解每段程序的作用; C、 在编写复杂的程序时不要将全部语句都写在 main 函数中,而要多利用函数,用一个函 数来实现一个单独的功能。这样既易于阅读也便于调试,便于分别检查和处理。

     (2) 在人工检查无误后,才可以上机调试。通过上机发现错误称动态检查。在编译时给出 语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。应当注意的是有 时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再 找。有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,要善于分 析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。

     如果系统提示的出错信息多,应当从上到下 ---- 改正。有时显示出一大片出错信息往往 使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编 译时就会对所有含该变量的语句发出出错信息;有的是少了“ } ”或多了“ }”有的是书写语句 时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“ };”就所有错误都消除 了。养成写程序习惯,如输入“ {”时,中间先不写代码,后面紧接输入” }” , 就不会漏了或多 了匹配符号。

     (3) 在改正语法错误后,程序经过连接就得到可执行的目标程序。运行程序,输入程序所 需数据,就可得到运行结果。应当对运行结果作分析。看它是否符合要求。有的人看到运行 结果就认为没问题了,就不作分析,这是不好的。

     有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”, 输入这些数据可以得出容易判断正确与否的结果。

     例如,if 语句有两个分支,有可能在流程经 过其中一个分支时结果正确,而经过其它一个分支时结果不对等。必须考虑周全。

     事实上,当程序复杂时很难把所有的可能方案全部都试到, 选择典型的情况作试验即可。

     ( 4)运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。

     可以采用以下办法:

     A 将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。例 如,

     测绘程序设计实验报告 19

      复合语句忘记写花括弧,只要一对照流程图就能很快发现。

     B 如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个 printf 函数语句,输出有关变量的值,往下检查。直到找到在哪一段中数据不对为止。这时就已经 把错误局限在这一段中了。不断减小“查错区”,就可能发现错误所在。

     用 printf 函数语句测试未能发现所有问题,则可用系统提供的调试工具,跟踪流程并给出 相应信息,使用更为方便。

     总之,程序调试是一项细致、较为繁琐的工作,需要下功夫,动脑子,善于累积经验。在 程序调试过程中往往反映出一个人的学习态度, 以前学习 C 语言时基础不太好 , 但我也不灰心, 多写程序,“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少 的实用的程序。

     常用快捷键 工欲善其事,必先利其器”,为了加速调试的过程,避免调试的时候鼠标点来点去,这里 简要介绍一下调试时常用的快捷键,熟练掌握这些快捷键,可以大大加速调试工作的进度。

     当然,开始的时候不可能记住全部的快捷键,可以随着自己调试需要用到的功能的增加,逐 渐熟悉这些快捷键,尽量使用它们。首先应该熟悉编译、运行、窗口切换相关的操作。然后 再逐步熟悉 Debug 用到的检查、观察、单步跟踪等操作。

     VC6.0 中常用的快捷键:

     快捷键

     功能描述 E5— 【 Debug 】

     开始隅试运仃,缠续闊试込仃 Ctrb Shift 4-P5 [Debug 3 9 t Rostan 3 垂新调试运行 Shift+F5 I DeVug J Stop Debuc 】

     停上调试 F9

     添加„„删除断虫 Ctrl-F9

     允许/荒丨上斷点 Shift 十 F9

     快逾査看窗 1 1 Ctrl-Slnft—£9

     删除所有断点 Ctrl+b AH+F9 【 Edit 3 t Breakpouih 1 断白 设克时诂根 F10 【 Debug 】

     9 【 Step Over 】

     单步执不进入国数 Fll I Debus)I Step Into J 单步执彳几遇入函数 Shift-Fl 1 f Debus f Step Out^ 跳出艸前函甦 Ctrl-FlO 【 D 亡 bug 】

     B 【 Run to Cursor 】

     运希到斌标菲针处 Alt-FlO t Debug J t Apply Cad-e Changes] 应用调试时代码的改变 Alt+Fll

     切挽 Memon^ 窗丨 1 品小格式,叫以以 不同字廿格式來兄示 Alt-Shift-Fll

     切按 Memorv 闯丨 1 显亦格式 八、实验心得与体会 在这个学期里,在老师的带领下进行了《C 语言程序设计》学习。在这之前,我们已经对 VB 这门课程学习了一个学期,对程序设计有了一定的了解,但是也仅仅是停留在了解的范围, 对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头 难。

     上机进行实习是学习程序语言设计必不可少的实践环节, 特别是 C 语言灵活、简洁,更需 要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、 掌握

     测绘程序设计实验报告 20

      程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。

     学 习 C 程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间,所以, 老师希望我们能有效地利用课余时间进行上机练习,尽快掌握用 C 语言开发程序的能力,为 今后的继续学习打下一个良好的基础。

     C 语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要 的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的 实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实 践中解决这些问题,不断提高自己转化知识的能力。

     通过上机实习,我也从中发现了自己不少的问题,这都是只看书上的程序而没有自己亲 身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了 C 语言 那就大错特错了。

     我主要存在以下的这些缺点:

     1、 学习耐心与细心不足,如 seanf(“ % d" , &n);中的“ &”有时候会忘了。而在最后输 出时又错写成 printf( “ % d" , &n);从而错误得输出了地址而不是我原来想要的答案。

     2、 编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。

     3、 基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。

     4、 知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。

     5、 有时候不够精简,有一点用处不大或者说没有也可以的文字存在。

     6、 由于我的英语水平较差,调试程序时,错误的地方虽然电脑有显示,但由于是英文, 理解上还是存在一点冋题。

     我认为上机编程的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正 确,上机实验的目的可以概括为如下几个方面:

     1、加深对课堂讲授内容的理解 课堂上要讲授许多关于 C 语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬 背是不可取的。然而要使用 C 语言这个工具解决实际问题,又必须掌握它。通过多次上机练 习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握 C 语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解 的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

     学习 C 语言不能停留在学习它的语法规则,而是利用学到的知识编写 C 语言程序,解决 实际问题。即把 C 语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有 通过上机才能检验自己是否掌握 e 语言、自己编写的程序是否能够正确地解题。

     通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的 心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配 下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。

     自己 编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步 提高自己对 C 语言的理解和程序开发能力。

     2、 熟悉程序开发环境、学习计算机系统的操作方法 一个 C 语言程序从编辑、编译、连接到运行,都要在一定的外部操作...

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识