《测绘程序设计(C语言版).doc》由会员分享,可在线阅读,更多相关《测绘程序设计(C语言版).doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除测绘程序设计(C版)实习报告学 号: XXXXXXXXXXXXX 姓 名: XXXXX 班 级: XXXXXXXX 专 业: 测绘工程 课程名称: 测绘程序设计(C及Matlab) 指导老师: 肖根如 2015年12月目录(请用 插入引用索引和目录 自动生成)目录- 2 -1、实习目的- 3 -2、实习内容- 3 -2.1实习环境- 3 -2.2实习主要内容介绍- 3 -2.2.1算法- 3 -2.2.2角度转换- 4 -2.2.3坐标转换- 5 -2.2.4 用if语句实现选择结构- 5 -2.2.5用switch语句实现多分支选择结构- 6
2、-2.2.6循环语句- 7 -2.2.7利用数组处理批量数据- 8 -2.2.8用函数实现模块化程序设计- 9 -2.2.9使用结构体- 10 -2.2.10对文件的使用- 10 -3.实习步骤- 11 -3.1基本程序- 11 -3.2程序改进- 11 -3.3程序完善- 12 -3.4程序扩展- 13 -4.实习成果- 14 -4.1初始调试- 14 -4.2成功调试- 16 -4.3运行界面- 17 -5.实习体会- 18 -6.附录:实习程序作业清单- 21 - 1、实习目的1.掌握Turbo C集成环境的进入与退出、Turbo C集成环境各种窗口的切换,了解Turbo C集成环境的设
3、置。2.掌握C语言源程序的建立、编辑、修改、保存及编译和运行等操作。3.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型变量,掌握对这些变量赋值等使用的方法,知道输出时格式字符的使用。4.学会使用C语言的基本运算符(主要是算术运算符、赋值运算符)及其表达式,特别是自加运算符(+)和自减运算符(-)的使用。5.掌握C语言源程序的结构特点与书写规范。2、实习内容2.1实习环境 Turbo C 2.0集成开发环境2.2实习主要内容介绍 2.2.1算法 例2.1计算三角高程(公式:h=s*tana+i-v) 分析:步骤1:输入斜距s; 步骤2:输入竖直角a; 步骤3:输入仪器高i; 步骤4:输入
4、棱镜高v; 步骤5:s*tana+i-vh; 步骤6:输出h,结束。(1) N-S流程图法输入s,a,i,vs*tana+i-vh输出h结束(2)流程图法开始输入S、i、v、 Stan+i-v h输出h结束 2.2.2角度转换 例2.2度分秒转换 #include void main int a,b,c; double d; printf(Input ddmmss (Format :10 39 59):”); scanf(“%d%d%d”,&a,&b,&c); d=(a+b/60.0+c/3600.0); printf(“%d%d%d=%lfn”,a,b,c,d);2.2.3坐标转换 例2.3
5、坐标转换代码 #include void main() double N,H,B,L,e=1/298.25; double X,Y,Z; printf(“Input N,H,B,L”); scanf(“%lf%lf%lf%lf”,&N,&H,&B,&L); X=(N+H)*cos(B)*(L); Y=(N+H)*cos(B)*(L); Z=(N*(1-e*e)+H)*sin(B); printf(“X=%lfnY=%lfnZ=%lf”,X,Y,Z); 2.2.4 用if语句实现选择结构 例2.4解得一元二次方程ax2+bx+c=0的根。由键盘输入a,b,c。假设a,b,c的值任意,并不保证b2
6、-4ac=0。需要在程序中进行判别,如果b2-4ac=0,就计算并输出方程的两个实根,如果b2-4ac0,就输出“方程无实根”的信息。 编写程序: #include #include void main() double a,b,c,disc,x1,x2,p,q; scanf(“%lf%lf%lf”,a,b,c); disc=b*b-4*a*c; if(disc0) printf(“This equation hasnt real rootsn”); else p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q;x2=p-q; printf(“real roo
7、ts:nx1=%7.2fnx2=%7.2fn”,x1,x2); 2.2.5用switch语句实现多分支选择结构 例2.5用菜单实现GPS 测量中两相邻点间的距离要求。 编写程序: #includemain() char grade; scanf(%c,&grade); switch(grade) case A:printf(dmin1:); printf(100n); printf(dmax1:); printf(2000n); printf(dp1:); printf(300);break; case B:printf(dmin2:); printf(15n); printf(dmax1:)
8、; printf(250n); printf(dp2:); printf(70);break; case C:printf(dmin3:); printf(5n); printf(dmax3:); printf(40n); printf(dp3:); printf(1015);break; case D:printf(dmin4:); printf(2n); printf(dmax4:); printf(15n); printf(dp4:); printf(510);break; case E:printf(dmin5:); printf(1n); printf(dmax5:); printf
9、(10n); printf(dp5:); printf(25);break; return 0;2.2.6循环语句 例2.6求100200间的全部素数。 编写程序: #include #include void main() int n,k,i,m; m=0; for(n=101;n=200;n=n+2) k=sqrt(n); for(i=2;i=k+1) printf(“%d”,n); m=m+1; if(m%10=0)printf(“n”); printf(“n”); 2.2.7利用数组处理批量数据 例2.7采用测回法计算水平角 编写程序: # include # include # de
10、fine PI 3.14void main() int d2,e2,i; float f2,g2,h2,j2; double a2,b2,ang2,angle; for(i=0;i3;i+) scanf(%d%d%f%f%f%f,&di,&ei,&fi,&gi,&hi,&ji); ai=(di+fi/60+gi/3600); ai=ai*PI/180; bi=(ei+hi/60+ji/3600); bi=bi*PI/180; angi=ai-bi; angle=(ang0+ang1)*1/2; printf(angle=%lfn,angle);2.2.8用函数实现模块化程序设计 例2.8测回法
11、计算水平角,使用函数 编写程序: # include # include # define PI 3.14void main() double spj(double x,double y); int d2,e2,i; float f2,g2,h2,j2; double a2,b2,ang2,angle; for(i=0;i3;i+) scanf(%d%d%f%f%f%f,&di,&ei,&fi,&gi,&hi,&ji); ai=(di+fi/60+gi/3600); ai=ai*PI/180; bi=(ei+hi/60+ji/3600); bi=bi*PI/180; angi=ai-bi; a
12、ngle=spj(ang0,ang1); printf(angle=%lfn,angle);double spj(double x,double y) double z; z=(x+y)*1/2; return(z);2.2.9使用结构体 例2.9计算坐标方位角,使用结构体 编写程序: #include#include#define PI 3.14void main() struct Fwj double a; double c; fwj; double b; scanf(%lf%lf,&fwj.a,&fwj.c); b=fwj.a+fwj.c*PI/180-180; printf(b=%f,
13、b);2.2.10对文件的使用 例2.10计算三角高程,使用文件方法。 编写程序: #include #include void main() FILE*fp; double s,alpha,I,v,hgt; fp=fopen(D:TURBOC2.0tri.dat,r); if(fp=fopen(tri.dat,r)=NULL) printf(error); exit(0); printf(input s,alpha,I and vn); while(fscanf(fp,%lf%lf%lf%lf,&s,&alpha,&I,&v)!=EOF); printf(%lf%lf%lf%lf,s,alp
14、ha,I,v); hgt=s*tan(alpha)+I-v; printf(Tri Height=%lfn,hgt); fclose(fp);3.实习步骤3.1基本程序例3.1编写计算三角高程代码编写程序: #include #include main() double s,alpha,i,v; hgt; s=20.0; alpha=30.0;i=1.0; v=1.5; hgt=s*tan(alpha*3.14/180)+i-v; printf(Tri hgt=%lfn,hgt);3.2程序改进 将例3.1程序改为scanf输入 代码如下: #include #include main() d
15、ouble s,alpha,I,v; double hgt; printf(input s,alpha,I and vn); scanf(%lf%lf%lf%lf,&s,&alpha,&I,&v); hgt=s*tan(alpha)+I-v; printf(Tri Height=%lfn,hgt);3.3程序完善 将例3.1程序改为函数 代码如下:#include #include main() double tri(double a,double b,double c,double d); double s,alpha,I,v; double hgt; printf(input s,alph
16、a,I and vn); scanf(%lf%lf%lf%lf,&s,&alpha,&I,&v); hgt=tri(s,alpha,I,v); printf(Tri Height=%lfn,hgt);double tri(double a,double b,double c,double d) double z; z=a*tan(b)+c-d; return (z);3.4程序扩展 将例3.1改为结构体 代码如下: #include #include main() struct Gc double s; double alpha; double I; double v; gc; double
17、hgt; printf(input s,alpha,I and vn); scanf(%lf%lf%lf%lf,&gc.s,&gc.alpha,&gc.I,&gc.v); hgt=gc.s*tan(gc.alpha)+gc.I-gc.v; printf(Tri Height=%lfn,hgt); 将例3.1改为文件 代码如下: #include #include void main() FILE*fp; double s,alpha,I,v,hgt; fp=fopen(D:TURBOC2.0tri.dat,r); if(fp=fopen(tri.dat,r)=NULL) printf(erro
18、r); exit(0); printf(input s,alpha,I and vn); while(fscanf(fp,%lf%lf%lf%lf,&s,&alpha,&I,&v)!=EOF); printf(%lf%lf%lf%lf,s,alpha,I,v); hgt=s*tan(alpha)+I-v; printf(Tri Height=%lfn,hgt); fclose(fp);4.实习成果4.1初始调试 (1) 三角高程计算(scanf输入)代码: (2)三角高程函数代码 (3)三角高程文件代码 调试结果:(1)三角高程计算(scanf输入) 错误原因: “Double“应改为“dou
19、ble“ “Hgt=s*tan(alpha)+I-v“中“Hgt“改为“hgt“ (2)三角高程函数错误原因: 应将输入与输出放在主函数中,即: “ scanf(%lf%lf%lf%lf,&a,&b,&c,&d)“改为“scanf(“%lf%lf%lf%lf“ ,&s,&alpha,&I,&v);“并置于主函数中。 “printf(%lfn,z)“改为”printf(Tri Height=%lfn,hgt)“并置于主函数中。 (3)三角高程文件 错误原因: 将“fscanf(fp,%lf%lf%lf%lf,&s,&alpha,&I,&v)“改为 “while(fscanf(fp,%lf%lf%
20、lf%lf,&s,&alpha,&I,&v)!=EOF); printf(%lf%lf%lf%lf,s,alpha,I,v);4.2成功调试 (1)三角高程计算(scanf输入)(2)三角高程函数 (3)三角高程文件4.3运行界面 (1)三角高程计算(scanf输入) (2)三角高程函数 (3)三角高程文件 (1)三角高程计算(scanf输入)(2)三角高程函数 (3)三角高程文件5.实习体会在四周的时间里,我们在专业老师的带领下进行了C语言程序实践学习。老师向我们简单的介绍了几个比较重要的实际操作。上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真
21、正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。这段时间的学习我知道了C语言的基本特点有以下几点:1 语言简洁,使用灵活方便。2 运算符丰富,表达能力强。3 数计类型丰富。4 目标程序质量高,具有面向硬件系统的特点。5 具有结构化的控制语句和模块化的程序结构。6 具有编译预处理功能。7 程序设计自由度大,可移植性好。学习C程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用C语言开发程序的
22、能力,为今后的继续学习打下一个良好的基础。我学习了C语言的数据类型、常量与符号常量、变量、C语言的运算符和表达式、赋值运算符和赋值表达式、自增自减运算符以及逗号表达式等。这章介绍了结构化程序的三种基本结构、C语句概述、数据输出包括字符输出函数putchar()和格式输出函数printf()、数据输入包括字符输入函数getchar()和格式输入函数scanf(),还有一些简单的C语程序设计举列等。个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于C语言的语法规则,十
23、分复杂,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。学习C语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把C语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确,恐怕是大
24、多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去掩盖程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对C语言的理解和程序开发能力。2、熟悉程序开发环境、学习计算机系统的操作方法一个C语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓环境就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。
25、同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。3、学习上机调试程序完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。通过这次为数不多的几天计算机实践学习,我们了解了一些关于C语言的知识,理解巩固了我们C
26、语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。在科技高度发展的今天,计算机在人们当中的作用越来越突出。而C语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交换,因此,C语言的学习对我们特别重要。以上是我的一点学习心得,希望能更好的运用到学习中去。C语言是一门很有用的、对于我们的就业很实际的语言,学习好C语言是一项必须而实际的任务。我们必须要好好掌握。6.附录:实习程序作业清单 1.计算圆面积(初始化)/* 201420050215yangrui02 */#include#include#define PI
27、3.14main() float r,C; r=2.0; c=PI*r*r; printf(c=%fn,c); 2.水准测量(初始化)/* 201420050215yangrui03 */#include#includemain() int Bz1,Bz2,BRz1,BRz2,k1,k2; float s1,s2,s,B1; float h; Bz1=1726; Bz2=1866; BRz1=6513; BRz2=6554; k1=4687; k2=4787; s1=Bz1+k2-BRz1; s2=Bz2+k1-BRz2; s=s1-s2; B1=Bz1-Bz2; h=B1-s/2; prin
28、tf(h=%fn,h); 3.水平角测回法观测(初始化)/* 201420050215yangrui04 */# include # include # define PI 3.14void main() int d,e,f,g,h,i,j,k,l,m,n,o; double a1,b1,a2,b2,angle1,angle2,angle; d=15; e=20; f=30; g=10; h=30; i=40; j=30; k=20; l=10; m=10; n=20; o=30; a1=(d+e/60+f/3600); a1=a1*PI/180; b1=(g+h/60+i/3600); b1
29、=b1*PI/180; a2=(j+k/60+l/3600); a2=a2*PI/180; b2=(m+n/60+o/3600); b2=b2*PI/180; ang1=a1-b1; ang2=a2-b2; angle=(ang1+ang2)*1/2; printf(angle=%fn,angle); 4.计算三角高程(初始化)/* 201420050215yangrui05 */#include #include main() double s,alpha,i,v; double hgt; s=20.0; alpha=30.0; i=1.0; v=1.5; hgt=s*tan(alpha*3
30、.14/180)+i-v; printf(Tri hgt=%lfn,hgt); 5.圆面积(scanf)/* 201420050215yangrui06 */#include#include#define PI 3.14main() float r,c; scanf(%f,&r); c=PI*r*r; printf(c=%fn,c); 6.水准测量(scanf)/* 201420050215yangrui07 */#include#includemain() int Bz1,Bz2,BRz1,BRz2,s1,s2,s,B1; float h; scanf(%d%d%d%d,&Bz1,&Bz2,
31、&BRz1,&BRz2); s1=Bz1+4787-BRz1; s2=Bz2+4687-BRz2; s=s1-s2; B1=Bz1-Bz2; h=B1-s/2; printf(h=%fn,h); 7.水平角测回法(scanf)/* 201420050215yangrui08 */# include # include # define PI 3.14void main() int d,e,f,g; float h,i,j,k,l,m,n,o; double a1,b1,a2,b2,angle1,angle2,angle; scanf(%d%d%d%d%f%f%f%f%f%f%f%f,&d,&e
32、,&f,&g,&h,&i,&j,&k,&l,&m,&n,&o); printf(input a1,b1,a2,b2n); a1=(d+h/60+l/3600); a1=a1*PI/180; b1=(e+i/60+m/3600); b1=b1*PI/180; a2=(f+j/60+n/3600); a2=a2*PI/180; b2=(g+k/60+o/3600); b2=b2*PI/180; angle1=a1-b1; angle2=a2-b2; angle=(angle1+angle2)*1/2; printf(angle=%lfn,angle); 8.计算三角高程(scanf )/* 201
33、420050215yangrui09 */#include #include main() double s,alpha,I,v; double hgt; printf(input s,alpha,I and vn); scanf(%lf%lf%lf%lf,&s,&alpha,&I,&v); hgt=s*tan(alpha)+I-v; printf(Tri Height=%lfn,hgt); 9.计算圆面积(if)/* 201420050215yangrui10 */#include#include#define PI 3.14void main() float r,s; scanf(%f,&
34、r); if(r0) s=PI*r*r; printf(s=%f,s); else printf(error); 10.计算三角形面积(if)/* 201420050215yangrui11 */#include#includevoid main() double a,b,c,s,area; printf(input a b c); scanf(%f%f%f,&a,&b,&c); if(a+b)c) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%f,area); else printf(error); 11.带号计算(if)/
35、* 201420050215yangrui12 */#include#includevoid main() int L; int n,N; scanf(%f,&L); if(L0) N=(L-L%6)/6+1; n=(L-L%3)/3+1; printf(6:); printf(N=%dn,N); printf(3:); printf(n=%dn,n); else printf(error); 12.水准测量(if)/* 201420050215yangrui13 */#includemain() int Bz1,Bz2,BRz1,BRz2,k1,k2; float s1,s2,s,B1; f
36、loat h; Bz1=1726; Bz2=1866; BRz1=6513; BRz2=6554; scanf(%d%d,&k1,&k2); if(k1=4687&k2=4787) s1=Bz1+k2-BRz1; s2=Bz2+k1-BRz2; s=s1-s2; B1=Bz1-Bz2; h=B1-s/2; printf(h=%fn,h); else printf(error); 13.计算坐标方位角(if)/* 201420050215yangrui14 */#include#include#define PI 3.14void main() double a,b,c; scanf(%f%f,&a,&c); if(c2.0) b=a+c*PI/180-180; printf(b=%f,b); else c=c-2; b=a+c*PI/180-180; prin