欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    测绘程序设计(C语言版).doc

    • 资源ID:29888406       资源大小:147KB        全文页数:46页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    测绘程序设计(C语言版).doc

    精品文档,仅供学习与交流,如有侵权请联系网站删除测绘程序设计(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.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集成环境的设置。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:输入棱镜高v; 步骤5:s*tana+i-vh; 步骤6:输出h,结束。(1) N-S流程图法输入s,a,i,vs*tana+i-vh输出h结束(2)流程图法开始输入S、i、v、 S·tan+i-v h输出h结束 2.2.2角度转换 例2.2度分秒转换 #include<stdio.h> 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=%lf°n”,a,b,c,d);2.2.3坐标转换 例2.3坐标转换代码 #include<stdio.h> 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-4ac>=0。需要在程序中进行判别,如果b2-4ac>=0,就计算并输出方程的两个实根,如果b2-4ac<0,就输出“方程无实根”的信息。 编写程序: #include<stdio.h> #include<math.h> 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(disc<0) 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 roots:nx1=%7.2fnx2=%7.2fn”,x1,x2); 2.2.5用switch语句实现多分支选择结构 例2.5用菜单实现GPS 测量中两相邻点间的距离要求。 编写程序: #include<stdio.h>main() 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:"); 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("10n"); printf("dp5:"); printf("25");break; return 0;2.2.6循环语句 例2.6求100200间的全部素数。 编写程序: #include<stdio.h> #include<math.h> 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;i+) if(n%i=0)break; if(i>=k+1) printf(“%d”,n); m=m+1; if(m%10=0)printf(“n”); printf(“n”); 2.2.7利用数组处理批量数据 例2.7采用测回法计算水平角 编写程序: # include <stdio.h># include <math.h># define PI 3.14void main() int d2,e2,i; float f2,g2,h2,j2; double a2,b2,ang2,angle; for(i=0;i<3;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测回法计算水平角,使用函数 编写程序: # include <stdio.h># include <math.h># 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;i<3;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=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<stdio.h>#include<math.h>#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",b);2.2.10对文件的使用 例2.10计算三角高程,使用文件方法。 编写程序: #include <stdio.h>#include <math.h>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,alpha,I,v); hgt=s*tan(alpha)+I-v; printf("Tri Height=%lfn",hgt); fclose(fp);3.实习步骤3.1基本程序例3.1编写计算三角高程代码编写程序: #include <stdio.h>#include <math.h>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 <stdio.h>#include <math.h>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);3.3程序完善 将例3.1程序改为函数 代码如下:#include <stdio.h>#include <math.h>main() double tri(double a,double b,double c,double d); double s,alpha,I,v; double hgt; printf("input s,alpha,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 <stdio.h>#include <math.h>main() struct Gc double s; double alpha; double I; double v; gc; double 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 <stdio.h>#include <math.h>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,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“应改为“double“ “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%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语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。这段时间的学习我知道了C语言的基本特点有以下几点:1 语言简洁,使用灵活方便。2 运算符丰富,表达能力强。3 数计类型丰富。4 目标程序质量高,具有面向硬件系统的特点。5 具有结构化的控制语句和模块化的程序结构。6 具有编译预处理功能。7 程序设计自由度大,可移植性好。学习C程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用C语言开发程序的能力,为今后的继续学习打下一个良好的基础。我学习了C语言的数据类型、常量与符号常量、变量、C语言的运算符和表达式、赋值运算符和赋值表达式、自增自减运算符以及逗号表达式等。这章介绍了结构化程序的三种基本结构、C语句概述、数据输出包括字符输出函数putchar()和格式输出函数printf()、数据输入包括字符输入函数getchar()和格式输入函数scanf(),还有一些简单的C语程序设计举列等。个人认为课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于C语言的语法规则,十分复杂,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。学习C语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把C语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握C语言、自己编写的程序是否能够正确地解题。通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对C语言的理解和程序开发能力。2、熟悉程序开发环境、学习计算机系统的操作方法一个C语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。3、学习上机调试程序完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。通过这次为数不多的几天计算机实践学习,我们了解了一些关于C语言的知识,理解巩固了我们C语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。同时它让我知道,只要你努力,任何东西都不会太难。在科技高度发展的今天,计算机在人们当中的作用越来越突出。而C语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交换,因此,C语言的学习对我们特别重要。以上是我的一点学习心得,希望能更好的运用到学习中去。C语言是一门很有用的、对于我们的就业很实际的语言,学习好C语言是一项必须而实际的任务。我们必须要好好掌握。6.附录:实习程序作业清单 1.计算圆面积(初始化)/* 201420050215yangrui02 */#include<stdio.h>#include<math.h>#define PI 3.14main() float r,C; r=2.0; c=PI*r*r; printf("c=%fn",c); 2.水准测量(初始化)/* 201420050215yangrui03 */#include<stdio.h>#include<math.h>main() 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; printf("h=%fn",h); 3.水平角测回法观测(初始化)/* 201420050215yangrui04 */# include <stdio.h># include <math.h># 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=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 <stdio.h>#include <math.h>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.14/180)+i-v; printf("Tri hgt=%lfn",hgt); 5.圆面积(scanf)/* 201420050215yangrui06 */#include<stdio.h>#include<math.h>#define PI 3.14main() float r,c; scanf("%f",&r); c=PI*r*r; printf("c=%fn",c); 6.水准测量(scanf)/* 201420050215yangrui07 */#include<stdio.h>#include<math.h>main() int Bz1,Bz2,BRz1,BRz2,s1,s2,s,B1; float h; scanf("%d%d%d%d",&Bz1,&Bz2,&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 <stdio.h># include <math.h># 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,&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 )/* 201420050215yangrui09 */#include <stdio.h>#include <math.h>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<stdio.h>#include<math.h>#define PI 3.14void main() float r,s; scanf("%f",&r); if(r>0) s=PI*r*r; printf("s=%f",s); else printf("error"); 10.计算三角形面积(if)/* 201420050215yangrui11 */#include<stdio.h>#include<math.h>void 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)/* 201420050215yangrui12 */#include<stdio.h>#include<math.h>void main() int L; int n,N; scanf("%f",&L); if(L>0) 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 */#include<math.h>main() int Bz1,Bz2,BRz1,BRz2,k1,k2; float s1,s2,s,B1; float 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<stdio.h>#include<math.h>#define PI 3.14void main() double a,b,c; scanf("%f%f",&a,&c); if(c<2.0) b=a+c*PI/180-180; printf("b=%f",b); else c=c-2; b=a+c*PI/180-180; prin

    注意事项

    本文(测绘程序设计(C语言版).doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开