《测绘程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《测绘程序设计实验报告.docx(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 测绘程序设计(C版)实习报告学 号: 2 姓 名: 李阳靖 班 级: 1420501Z 专 业: 测绘工程 课程名称:测绘程序设计(C与Matlab)指导老师: 肖根如 2015年12月目录前言1一、实验目的1二、实验环境2三、与的熟悉与操作2四、实验内容梗概3五、实验具体内容4实验一 算法4实验二 数据类型、运算符和表达式5实验三 控制语句6实验四 函数9实验五 数组11实验六 结构体与共用体12六、常见错误与分析14七、程序调试15八、实验心得与体会17九、附录:实习程序设计清单21 前言现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。作为新时代的大学
2、生,我们应该不断努力学习科学文化知识,以适应社会的发展要求,以现代化的科学知识为祖国做贡献。而C语言作为一种计算机语言,无疑是我们将来工作不可缺少的一门技能,所以我们应该认真学好C语言。但只是课本上的知识是不够的,我们应该将从课本上学到的理论知识应用到实践中,通过不断的实践,在实践中发现错误解决错误,并不断创新,最后能熟练的运用所学的知识,充分掌握这种工具。C语言知识博大精深,有必要对C语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。想学的更深更透彻的话就必须进一步掌握运用C进行程序设计的能力;进一步理解和运用面向过程程序设计的思想和方法
3、;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用互联网查找相关的知识并学习;学海之路何其宽广,有必要让我们孜孜不倦的求索下去。一、 实验目的C语言程序设计实习是在学习C语言程序设计理论知识的基础上进行的实践教学环节,其目的是培养我们具有初步的C语言程序设计、编程、调试和排除C语言程序语法、逻辑错误的能力。全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构与数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以与算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提
4、高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。在实习过程中,我们要认真复习基本概念,独立编写程序,并上机调试运行,培养自己发现程序中的错误、改正错误以使程序能正确运行的能力。经验丰富的人,当编译时出现“出错信息”时,能很快地判断出错误所在,并改正之。而缺乏经验的人即使在系统给出明确出错提示信息下也往往找不出错误而求救于别人。对于我们来说,不仅要了解和熟悉有关理论和方法,还要求自己动手实现,要求会编写程序并上机调试通过。因此调试程序本身是程序设计课程的一个重要内容和基
5、本要求,应给予充分的重视。调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“意会”难以“言传”。调试程序的能力,是学完C语言程序设计之后,我们应当掌握的一项基本功。因此,千万不要在程序通过后就认为完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等,甚至于“自设障碍”,即把正确的程序改为有错的,如用scanf函数输入变量时,漏写“&”符号,使数组下标越界,使整数溢出等),观察和分析所出现的情况,并认真、与时总结。这样的学习是灵活主动的学习而不是呆板被动的学习,才会有真正的收获。因此,我们的实
6、习目的可综合的概括为:1熟悉TC20、TC30和的运行环境。2了解在TC20、TC30和上如何编辑、编译、连接和运行一个C程序。3熟练使用各种C语言的数据结构与类型、运算符与表达式。4熟练掌握格式输入与格式输出函数的使用。5通过运行简单的C程序,初步了解C源程序的特点,初步掌握查错和排错的技能。二、实验环境PC微机 Windows 操作系统 与程序集成环境三、与的熟悉与操作(一)1.在安装Turbo C编译系统基础上,则在DOS命令状态下键入命令tc。进入Turbo C集成环境后,首先在屏幕上显示Turbo C主菜单窗口。在该窗口,有8个菜单条目。每一个菜单的意义如下: File 处理文件(包
7、括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统与调用DOS 。 Edit 建立、编辑源文件。Run 控制运行程序。如果程序已经编译连接好,且Debug/Source Debugging以与Option/Compiler/Code generation/OBJ Debug Information开关置为On,则可以用此菜单初始化调试阶段。 Compile 编译并生成目标程序与可执行文件。 Project 允许说明程序中包含哪些文件的管理条目。 Options 可以选择集成环境任选项(如存储模式、编译时的任选项、诊断与连接任选项)与定义宏;也可以记录Includ
8、e Output与Library文件目录,保存编译任选项和从配置文件加载任选。 Debug 检查、改变变量的值,查找函数,程序运行时查看调用栈。选择程序编译时是否在执行行代码中插入调试信息。 Break/Watch 增加、删除、编辑监视表达式,与设置、清除、执行至断点。 2.特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。而选择Edit项目后,只是进入编辑器。 为了从主菜单中选择所需要的功能,可以用以下两种方式之一: (1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(与)选择需要的菜单,然后按回车(Enter)键。 (2)直接按Alt+主菜单条目
9、中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。例如,按Alt+F表示选择文件子菜单(File)。当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(与)来移动该高亮度线,从而选择所需要的功能。在菜单调用时,按Esc键后将直接返回到活动窗口。(二)1安装和启动 运行Visual Studio软件中的程序,选择安装,然后按照安装程序的指导完成安装过程。 2创建工程项目 用系统建立C语言应用程序,首先要创建一个工程项目(project),用来存放C程序的所有信息。创建一个工程项目的操作步骤如下: 进入环境后,选择主菜单“文件(File)”中的“新建(
10、New)”选项,在弹出的对话框中单击上方的选项卡“工程(Projects)”,选择“Win32 Console Application”工程类型,在“工程(Project name)”一栏中填写工程名。3. 新建C源程序文件 选择主菜单“工程(Project)”中的“添加工程(Add to Project) 新建(New)”选项,为工程添加新的C源文件。4打开已存在的工程项目,编辑C源程序 进入环境后,选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace”对话框内找到并选择要打开的工作区文件,单击“确定(OK)” 按钮,打开工作区。5在工程项目中添加已
11、经存在的C源程序文件 选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace”对话框内找到并选择要打开的工作区文件,单击“确定(OK)”按钮打开工作区。6编译、连接和运行 (1)编译 选择主菜单“编译(Build)”中的“编译(Compile)”命令,或单击工具条上的图标,系统只编译当前文件而不调用链接器或其它工具。输出(Output)窗口将显示编译过程中检查出的错误或警告信息,在错误信息处单击鼠标右键或双击鼠标左键,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修改。(2)构建 选择主菜单“编译(Build)”中的“构建(Build)”命令,或单
12、击工具条上的图标,对最后修改过的源文件进行编译和连接。7调试程序 在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序中的错误,系统提供了易用且有效的调试手段。调试是一个最基本的技能,不会调试就意味着即使学会了一门语言,却不能编制出任何好的软件。我们在前期进行编写程序时,经常会犯一些语句上的错误,熟练了过后,会犯一些逻辑上的错误,而这些错误往往是不易察觉的。四、实验内容梗概(一)算法算法是编写程序的灵魂,数据是加工的对象,语言是工具。在编译任何程序前,我们必须认真地进行思考和设计数据结构与操作步骤。(二)数据类型、运算符和表达式 在计算与高级语言中,数据的表现形式有常量和变量。在
13、实习过程中,我们应当掌握数据类型、运算符和表达式,并且能在C语言实现过程中熟练的定义变量以与明确各种运算符之间的计算。 (三)三种基本结构顺序结构、选择结构、循环结构等三种结构是C语言程序设计的三种基本结构,严格来说,所有的C程序都应由这三种基本结构组成。开始就着重这三种基本结构的应用练习,旨在使我们对于这三种结构有一个更加深刻的理解,能够根据处理问题的需要选择不同的结构进行处理。由于顺序结构在这三种结构中是最基本的,实际上当我们把程序中的选择结构部分和循环结构部分看作一个整体时,那么,整个程序就总是由顺序结构组成的了。(四)函数我们如果要用C语言进行大程序设计,一般采用模块化的思想。其基本思
14、想是将一个大的程序按照功能进行分割成一些模块,使每一个模块都成为功能单一、结构清晰、接口简单、容易理解的小程序。C语言是用函数来实现这种模块化功能的。我们用C语言设计程序,任务只有一种,就是编写函数,至少也要编写一个main()函数。根据程序的复杂程度,还可以编写多个子函数。在这一部分我们就通过练习进一步掌握用子函数来进行模块化程序设计的方法,熟悉子函数的调用和执行过程。(五)数组应用数组是一种构造数据类型,指的是一组同类型数据组成的序列,运用数组可以高效地处理很多问题。五、实验具体内容【实验一】算法(一) 实验目的 1.熟悉和掌握用SmartDraw软件进行流程图的绘制 2.了解流程图的格式
15、 3.明确算法的目的(二)实验内容 1.用流程图来表示算法2.检查流程图的语句错误与逻辑错误(三)实验步骤我们以水准测量为例1.我们在进行水准测量前,我们应该确定测量路线以与选取测量方向,然后就将水准仪整平准备测量;2.在测量过程中,我们要对数据的可靠程度进行判断,所以在判断框中输入“d5?”,表示判断视距差是否在误差范围之内;3.当测量站数大于1后,就需要对视距差之和进行判断,如果前几站视距差之和大于限差,则需重测。所以,在后面加上一个判断框,写上“D10?”;3.如果满足了两个判断框的条件,则进行下一站的测量;如果不满足其中的一个条件,就需要重新进行数据测量与输入;4.最后判断是否将整个测
16、区测完,如果没有则继续测量,直至测完为止。测量完成且满足限差要求,就可停止运行计算。(四)实验总结1.程序设计反映了利用计算机解决实际问题的全过程,具体要经过以下四个基本步骤:分析问题,确定数学模型或方法;设计算法,画出流程图;选择编程工具,按算法编写程序;调试程序,分析输出结果。2.为解决一个问题而采取的方法和步骤,就算法。算法是程序设计的核心。3.算法具有5个特性:有穷性、确定性、有效性、要有数据输入、要有结果输出。算法的评价标准包括:正确性、可读性、通用性、高效率。算法效率的度量分为时间度量和空间度量。 4.描述算法有多种不同的工具,常用的有:流程图、结构化流程图和伪代码等。实用结构化流
17、程图能帮助培养良好的程序设计风格,提倡用结构化流程图表示算法。【实验二】 数据类型、运算符和表达式 (一) 实验目的 1.掌握C语言的数据类型,了解C语言中数据类型的意义,熟悉如何定义整型、字符型和实型的变量,以与对它们赋值的方法。2.掌握不同类型的数据之间赋值的规律。3.学会用C的有关算术运算符,以与包含这些运算符的表达式,特别是是+和运算符的使用。4.掌握C语言中使用最多的一种语句赋值语句的使用方法。5.掌握scanf()函数、printf()函数的调用方法,掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。6.掌握字符输入输出函数getchar()、putchar()函数的调用
18、方法。 (二)实验内容 1.用printf函数来输入表达式运行结果。2.观察实验步骤中表达式的结果。 (三)实验步骤 以方位角的计算为例:1.在明确该程序算法以与熟知各种数据类型的基础上,先确定三个变量,然后声明它们的数据类型2.赋予那两个已经声明变量各自的初值3.根据变量,执行判断语句,判断b是否大于180度4.根据算法,写出表达式,并根据判断结果运行不同的表达式5.最后用printf输出计算结果输入程序:int main()int a12,a23,b; a12=100,b=50;if(b180)a23=a12+b-180;elsea23=a12-b+180;printf(a23=%dn,a
19、23);运行结果为:(四)实验总结1.C语言数据类型有:基本类型(整型、字符型、实型)、构造类型(结构体类型、公用体类型、枚举类型)、指针类型和空类型。整型又分为段整形、基本整型和长整型三种。整型还可以分为有符号型和无符号型。实型分为单精度型和双精度型。2.变量是一个用于存放数值的内存存储区,根据变量的类型不同,该存储区被分配不同字节的内存安源。变量用标识符命名。C程序中用到的任何变量都必须在使用前进行定义。3.整形变量可以用十进制、八进制、和十六进制来表示。4.转义字符占一个字节,分为以下三类:(1)控制输出格式的转义字符:n、t、b、r、f等。(2)控制三个特殊符号输出的转义字符:、”5.
20、C语言的运算符(1)基本算术运算符:+-*/%,先乘除、求余,后加减;对于/运算,两个整数相除结果仍为整数;%运算符只对整型数据有效。(2)逗号运算符的运算规则:从左向右依次运算每一个表达式,逗号表达式的结果就是最后一个表达式的值。6.+或可以卸载变量之前,也可以写在变量之后。如果对变量施加了前缀或后缀运算,并参与其他运算,则前缀运算是先改变变量的值再做运算,而后缀运算是先参与运算后改变变量的值。自增和自减运算符的运算对象只能是变量,而不能是表达式或常量。7.当表达式中含有不同类型的数据时,运算的数据类型默认按隐式类型转换,即从精度低的类型自动转换成精度高的类型,否则会造成精度损失。8.C语言
21、中没有提供输入输出语句,在其库函数中提供了一组输入输出函数。其中对标准输入输出设备进行格式化输入输出的函数是scanf和printf。9.输入函数scanf()的功能是接受键盘输入的数据给变量输出函数printf()的功能是将数据以一定格式显示输出。(1)输出函数的一般形式为:printf(“格式控制字符串“,输入项表)其中格式控制字符串由格式说明符、转义序列和普通字符组成。而一个格式说明符将引起一个输出参数项的转换与显示。格式说明符是由%引出并以一个类型描述符结束的字符串,中间是一些可选的附加说明项。(2)输入函数的一般形式为:Scanf(“格式控制字符串“,输入项表)其中格式控制字符与pr
22、intf()函数中的类似,不过一般只含有简单的格式说明符;输入项表至少有一个输入项,且必须是变量的地址(用变量名前加&表示)Printf()和scanf()都要求格式转换说明符与输入项在个数、顺序、类型上一一对应。 【实验三】控制语句(一)实验目的 1.熟练掌握if 、ifelse、ifelseif语句和switch语句格式与使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2.熟练掌握while语句、do while语句和for语句格式与使用方法,掌握三种循环控制语句的循环过程以与循环结构的嵌套,利用循环语句实现循环结构。 3.掌握简单、常用的算
23、法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 (二)实验内容 1.选择结构程序设计; 2. if语句的使用;3.使用switch语句实现多分支选择结构;4.三种循环语句的应用; 5.循环结构的嵌套;6.break和continue语句的使用。 (三) 实验步骤 以带号计算为例1.根据所需计算的方法分为三度带和六度带,确定程序的结构2.定义变量,之后确定其数据类型,用scanf进行输入经度和判断标志3.我们需要选择计算方式,如果选用三度带进行计算,则将判断标志设为0,如果选用六度带进行计算,则判断标志设为费0的数4.用ifelse进行选择后,就
24、进行计算5.计算完毕后,用printf输出结果输入程序:int main()int n,m,l;scanf(%d%d,&l,&m);if(m=0)n=(l+3)/6;else n=l/3;printf(该点位于第%d带n,n);输出结果为: 以素数对的计算为例1.在明确素数对的定义与算法的基础上,我们先确定变量个数与名称,并且声明它们的数据类型2.然后确定用for的嵌套结构对素数对进行循环的判断、选择3.用if结构进行判断,判断的依据是首先这个数必须是素数,即不能被除了1与它本身外的数整除,其次,需要满足的条件是这两个素数必须相差2,所以先寻找“k=(int)sqrt(j)”作为除数,然后执行
25、“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;i150 & (a1+a2)150|(a1+a2)30)printf(overrun!);elsexp=m(x1,a1,x2,a2,y2,y1,a1,a2,a1,a2);yp=m(y1,a1,y2,a2,x2,x1,a1,a2,a1,a2);printf(p=%dn,%dn,xp,yp);结果
26、输出为: 以坐标正算为例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.最后运行、调试,直至输出正确的结果为止原程序输入为:main()float x1,y1,d,a;float x2,y2;scanf(%f%f%f%f,
27、&x1,&y1,&d,&a); x2=x1+d*cos(a*PI/180); y2=y1+d*sin(a*PI/180);printf(第二个点的坐标是:(%f,%f)n,x2,y2);改为函数形式程序输入为:double w(double x,double y,double z)double k;k=x+y*cos(z*PI/180);return(k);main()float x1,x2,y1,y2,d,a;scanf(%f%f%f%f,&x1,&y2,&d,&a); x2=w(x1,d,a);y2=w(y2,d,a);printf(第二个点的坐标是:(%fn,%fn),x2,y2); 输
28、出结果为: (四)实验总结 1.函数是利用C语言进行结构化程序设计的最基本的概念,C程序是由函数组成的。可以把一个复杂的程序分成多个模块进行设计,而每个模块是一个函数。main()是C程序中最重要的函数,程序运行从函数main()开始,也在函数main()结束。2.函数定义的一般形式为:函数符函数名(形式参数说明)声明与定义部分语句部分类型符指明函数返回值的类型。如果函数定义是不指明类型,系统隐含指定为int型。形式参数有两个作用:其一表示将从主调函数中接收哪些类型的信息,其二在函数体中形式参数可以被引用。3.函数返回值由return语句实现,return语句的格式为:return表达式;函数
29、先将表达式的值转换为所定义的类型,然后返回到主调函数中的调用表达式。4.函数调用是通过函数调用表达式进行,当函数被调用时,计算机才为形参分配存储空间。在调用函数时,函数之间的参数传递也称为虚实结合。形参从相应的实参得到值,称为传值调用方式。实参与形参在个数、类型上要匹配。5.函数调用前应该已经定义或声明。6.函数的形参与函数内定义的变量称为局部变量,其作用范围在定义它的函数或复合语句内。在函数外部定义的变量称为全局变量,其作用域是从定义或声明处到整个程序结束。 7.一个函数被调用的过程中可以调用另一个函数,即函数调用允许嵌套。 【实验五】数组(一)实验目的1.掌握数组的基本概念,包括:数组的定
30、义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以与引用数组元素的输入/输出。2.掌握字符数组与字符串的使用方法。理解字符数组与其它数组的区别、理解字符串与其特点。3.掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。4.掌握与数组相关的算法,包括排序算法和查找算法等。(二)实验内容有关数组的程序设计(三)实验步骤 以坐标反算为例1.明确坐标反算的算法2.声明变量PI(圆周率),并用普通程序将其表示出来3.最后将其改编为函数形式的程序原程序输入为:void main()float x1,x2,y1,y2,d,a;scanf(%f%f%f%f,&x1,&y1,
31、&x2,&y2);a=atan(y2-y1)/(x2-x1)*180/PI; d=sqrt(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1);printf(a=%fnd=%fn,a,d);改为数组形式程序输入为:void main()int i;float a4,d,m;for(i=1;i5;i+)scanf(%d,&ai);m=atan(a4-a3)/(a2-a1); d=sqrt(a2-a1)*(a2-a1)+(a3-a4)*(a4-a3);printf(a=%fnd=%fn,m,d);输出结果为:(四)实验总结1.数组命名要符合标识符的命名规则。2.数组名后的括号必须是方括号
32、,不能是圆括号。3.数组长度必须是正整数,可以是个表达式,但不能有变量,C语言不支持动态数组。4.数组长度表示数组中元素的个数。5.数组元素的下标从0开始数,所以最大下标是数组的长度减1。6.C语言中没有字符串变量,字符串是靠字符数组实现的,所谓字符数组就是元素的数据类型为字符型的数组。【实验六】结构体与共用体(一)实验目的 1.理解结构体类型的含义;掌握结构体类型变量的定义方法和使用;结构体类型变量的说明以与初始化方法。 2.理解结构体与数组的区别;掌握结构体类型数组的概念、定义和使用方法。 3.熟悉链表的概念,初步学会对链表进行操作。 4.初步了解共用体的概念与使用。 (二)实验内容 有关
33、结构与共同体的程序设计 (三)实验步骤 以三角高程计算为例1.明确三角高程计算的算法2.声明变量,用scanf进行输入,并用普通程序的结构将其算法表示出来3.将原程序改编为结构体形式原程序输入为:main()double HAB,HB,S,i,v,a,HA;scanf(%lf%lf%lf%lf%lf,&S,&i,&v,&a,&HA);HAB=S*tan(a*PI/180)+i-v ;HB=HA+S*tan(a*PI/180)+i-v;printf(HAB=%fn HA=%fn,HAB,HB);改为结构体形式程序输入为:struct X double S;double i;double v;do
34、uble a;double HA;N=100,1,2,45,200;main()double S,i,v,a,HA,HAB,HB;HAB=S*tan(a*PI/180)+i-v ;HB=HA+S*tan(a*PI/180)+i-v;printf(HAB=%dnHA=%dn,HAB,HB);输出结果为:(四)实验总结1.结构体类型定义结构体类型的形式为:struct结构体类型名数据类型成员名1;.数据类型成员名n;;2.结构体变量的定义结构体变量有三种定义形式:(1)先定义结构体类型,后定义结构体变量。(2)定义结构体类型的同时定义结构体变量。(3)不定义结构体类型名,直接定义结构体变量。3.结
35、构体变量的引用(1)结构体变量的初始化:许多C版本规定对外部或静态存储类型的结构体变量可以进行初始化,而对局部的结构体变量则不可以,新标准C无此限制,允许在定义时对自动变量初始化。(2)结构体成员的引用:由于C语言一般不允许对结构体变量的整体引用,所以对结构体的引用只能是对分量的引用,结构体变量中的任一分量可以表示为:结构体变量名.成员名4.结构体与数组C语言中数组的成员可以是结构体变量,结构体变量的成员也可以是数组。结构体数组有三种定义形式:(1)先定义结构体类型,后定义结构体数组。(2)定义结构体类型的同时定义结构体数组。(3)不定义结构体类型名,直接定义结构体变量。六、常见错误与分析C语
36、言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。有时候看着有错的程序,不知该如何改起,通过对C的学习与实践,我积累了一些C编程时常犯的错误:1.书写标识符时,忽略了大小写字母的区别。main()inta=5;printf(%d,A);编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量
37、的类型,进行了不合法的运算。main()floata,b;printf(%d,a%b);“%”是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。charc;c=a;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不行的。4.忽略了“=”与“=”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写if(a=3)then但C语言中,“=”是赋值运算符,“=”是关系运算符。如:if(a=3)a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。z=x+y;t=z/1
限制150内