收藏 分销(赏)

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

上传人:人****来 文档编号:4346411 上传时间:2024-09-09 格式:DOC 页数:56 大小:470.50KB
下载 相关 举报
测绘程序设计(C语言版).doc_第1页
第1页 / 共56页
测绘程序设计(C语言版).doc_第2页
第2页 / 共56页
点击查看更多>>
资源描述
测绘程序设计(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—v⇒h;         步骤6:输出h,结束。 (1) N-S流程图法 输入s,a,i,v s*tana+i-v⇒h 输出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=%lf\nY=%lf\nZ=%lf”,X,Y,Z);   } 2、2、4 用if语句实现选择结构  例2、4解得一元二次方程ax^2+bx+c=0得根。由键盘输入a,b,c。假设a,b,c得值任意,并不保证b^2-4ac〉=0。需要在程序中进行判别,如果b^2—4ac〉=0,就计算并输出方程得两个实根,如果b^2—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 hasn’t real roots\n”);     else   { p=—b/(2、0*a);      q=sqrt(disc)/(2、0*a);       x1=p+q;x2=p-q;   printf(“real roots:\nx1=%7、2f\nx2=%7、2f\n”,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(”100\n”);     printf("dmax1:"); printf(”2000\n");            printf("dp1:”); printf("300");break;     case 'B':printf("dmin2:"); printf(”15\n");       printf("dmax1:"); printf("250\n”);         printf(”dp2:"); printf("70”);break;         case ’C':printf("dmin3:"); printf(”5\n”);                printf(”dmax3:"); printf(”40\n"); printf(”dp3:”); printf(”10~15”);break;            case ’D':printf("dmin4:”); printf(”2\n");                    printf("dmax4:”); printf(”15\n");                  printf(”dp4:"); printf(”5~10”);break;           case 'E':printf(”dmin5:”); printf(”1\n”);            printf("dmax5:"); printf(”10\n”);                     printf(”dp5:"); printf(”2~5");break;                 }     return 0; } 2、2、6循环语句     例2、6求100~200间得全部素数.     编写程序:   #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、14 void main() {     int d[2],e[2],i;     float f[2],g[2],h[2],j[2];    double a[2],b[2],ang[2],angle;   for(i=0;i<3;i++)        {     scanf("%d%d%f%f%f%f”,&d[i],&e[i],&f[i],&g[i],&h[i],&j[i]);   a[i]=(d[i]+f[i]/60+g[i]/3600);   a[i]=a[i]*PI/180;         b[i]=(e[i]+h[i]/60+j[i]/3600);     b[i]=b[i]*PI/180;        ang[i]=a[i]-b[i];              }     angle=(ang[0]+ang[1])*1/2;     printf("angle=%lf\n",angle); } 2、2、8用函数实现模块化程序设计   例2、8测回法计算水平角,使用函数 编写程序:   # include 〈stdio、h> # include 〈math、h> # define PI 3、14 void main() {      double spj(double x,double y);   int d[2],e[2],i;   float f[2],g[2],h[2],j[2];   double a[2],b[2],ang[2],angle; for(i=0;i〈3;i++) {   scanf("%d%d%f%f%f%f”,&d[i],&e[i],&f[i],&g[i],&h[i],&j[i]); a[i]=(d[i]+f[i]/60+g[i]/3600);      a[i]=a[i]*PI/180;          b[i]=(e[i]+h[i]/60+j[i]/3600);     b[i]=b[i]*PI/180;   ang[i]=a[i]—b[i];         } angle=spj(ang[0],ang[1]);   printf("angle=%lf\n",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、14 void 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() {   ;    double s,alpha,I,v,hgt; fp=fopen("D:\\TURBOC2、0\\tri、dat","r");      if((fp=fopen("tri、dat","r"))==NULL)        {      printf(”error");       exit(0);        }    printf(”input s,alpha,I and v\n");   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=%lf\n",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=%lf\n”,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 v\n”); scanf(”%lf%lf%lf%lf",&s,&alpha,&I,&v);   hgt=s*tan(alpha)+I—v;  printf("Tri Height=%lf\n",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 v\n”);   scanf("%lf%lf%lf%lf",&s,&alpha,&I,&v);  hgt=tri(s,alpha,I,v);   printf("Tri Height=%lf\n",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 v\n");      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=%lf\n",hgt); }   将例3、1改为文件    代码如下:   #include <stdio、h> #include 〈math、h> void main() {   ;    double s,alpha,I,v,hgt;      fp=fopen("D:\\TURBOC2、0\\tri、dat","r");   if((fp=fopen("tri、dat”,"r"))==NULL)   {   printf("error”);     exit(0);         }     printf("input s,alpha,I and v\n”);    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=%lf\n",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(”%lf\n",z)“改为”printf("Tri Height=%lf\n",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、计算圆面积(初始化) /* 2yangrui02 */ #include〈stdio、h> #include〈math、h〉 #define PI 3、14 main() { float r,C;   r=2、0;   c=PI*r*r;   printf("c=%f\n”,c); } 2、水准测量(初始化) /* 2yangrui03 */ #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=%f\n",h); }  3、水平角测回法观测(初始化) /* 2yangrui04 */ # include <stdio、h> # include 〈math、h> # define PI 3、14 void 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=%f\n",angle); } 4、计算三角高程(初始化) /* 2yangrui05 */ #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=%lf\n”,hgt); }   5、圆面积(scanf) /* 2yangrui06 */ #include<stdio、h> #include<math、h〉 #define PI 3、14 main() {  float r,c; scanf("%f",&r); c=PI*r*r;   printf(”c=%f\n",c); }   6、水准测量(scanf) /* 2yangrui07 */ #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=%f\n",h); } 7、水平角测回法(scanf) /* 2yangrui08 */ # include 〈stdio、h> # include <math、h> # define  PI 3、14 void 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,b2\n");    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=%lf\n",angle); }   8、计算三角高程(scanf ) /* 2yangrui09 */ #include <stdio、h> #include <math、h> main() { double s,alpha,I,v; double hgt;  printf("input s,alpha,I and v\n"); scanf("%lf%lf%lf%lf",&s,&alpha,&I,&v);   hgt=s*tan(alpha)+I—v;    printf("Tri Height=%lf\n",hgt); } 9、计算圆面积(if) /* 2yangrui10 */ #include〈stdio、h〉 #include〈math、h〉 #define PI 3、14 void main() {   float r,s; scanf("%f",&r);  if(r〉0)   s=PI*r*r; printf("s=%f”,s);   else   printf("error"); } 10、计算三角形面积(if) /* 2yangrui11 */ #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) /* 2yangrui12 */ #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=%d\n”,N);    printf("3:”);    printf(”n=%d\n",n); }   else  printf("error"); } 12、水准测量(if) /* 2yangrui13 */ #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-
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 环境建筑 > 测绘测量

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服