测绘程序设计C语言版.docx

上传人:b****7 文档编号:10865813 上传时间:2023-02-23 格式:DOCX 页数:84 大小:182.85KB
下载 相关 举报
测绘程序设计C语言版.docx_第1页
第1页 / 共84页
测绘程序设计C语言版.docx_第2页
第2页 / 共84页
测绘程序设计C语言版.docx_第3页
第3页 / 共84页
测绘程序设计C语言版.docx_第4页
第4页 / 共84页
测绘程序设计C语言版.docx_第5页
第5页 / 共84页
点击查看更多>>
下载资源
资源描述

测绘程序设计C语言版.docx

《测绘程序设计C语言版.docx》由会员分享,可在线阅读,更多相关《测绘程序设计C语言版.docx(84页珍藏版)》请在冰豆网上搜索。

测绘程序设计C语言版.docx

测绘程序设计C语言版

测绘程序设计(C版)

实习报告

学号:

XXXXXXXXXXXXX

姓名:

XXXXX

班级:

XXXXXXXX

专业:

测绘工程

课程名称:

测绘程序设计(C及Matlab)

指导老师:

肖根如

 

2015年12月

(请用插入引用索引和目录自动生成)

1、实习目的

1.掌握TurboC集成环境的进入与退出、TurboC集成环境各种窗口的切换,了解TurboC集成环境的设置。

2.掌握C语言源程序的建立、编辑、修改、保存及编译和运行等操作。

3.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型变量,掌握对这些变量赋值等使用的方法,知道输出时格式字符的使用。

4.学会使用C语言的基本运算符(主要是算术运算符、赋值运算符)及其表达式,特别是自加运算符(++)和自减运算符(--)的使用。

5.掌握C语言源程序的结构特点与书写规范。

2、实习内容

2.1实习环境

TurboC2.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

voidmain

{

inta,b,c;

doubled;

printf(Inputddmmss(Format:

103959):

”);

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

voidmain()

{

doubleN,H,B,L,e=1/298.25;

doubleX,Y,Z;

printf(“InputN,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

#include

voidmain()

{doublea,b,c,disc,x1,x2,p,q;

scanf(“%lf%lf%lf”,a,b,c);

disc=b*b-4*a*c;

if(disc<0)

printf(“Thisequationhasn’trealroots\n”);

else

{p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;x2=p-q;

printf(“realroots:

\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);

}

}

2.2.5用switch语句实现多分支选择结构

例2.5用菜单实现GPS测量中两相邻点间的距离要求。

编写程序:

#include

main()

{

chargrade;

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;

}

return0;

}

2.2.6循环语句

例2.6求100~200间的全部素数。

编写程序:

#include

#include

voidmain()

{

intn,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

#include

#definePI3.14

voidmain()

{

intd[2],e[2],i;

floatf[2],g[2],h[2],j[2];

doublea[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

#include

#definePI3.14

voidmain()

{

doublespj(doublex,doubley);

intd[2],e[2],i;

floatf[2],g[2],h[2],j[2];

doublea[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);

}

doublespj(doublex,doubley)

{

doublez;

z=(x+y)*1/2;

return(z);

}

2.2.9使用结构体

例2.9计算坐标方位角,使用结构体

编写程序:

#include

#include

#definePI3.14

voidmain()

{

structFwj

{

doublea;

doublec;

}fwj;

doubleb;

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

#include

voidmain()

{

FILE*fp;

doubles,alpha,I,v,hgt;

fp=fopen("D:

\\TURBOC2.0\\tri.dat","r");

if((fp=fopen("tri.dat","r"))==NULL)

{

printf("error");

exit(0);

}

printf("inputs,alpha,Iandv\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("TriHeight=%lf\n",hgt);

fclose(fp);

}

3.实习步骤

3.1基本程序

例3.1编写计算三角高程代码

编写程序:

#include

#include

main()

{doubles,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("Trihgt=%lf\n",hgt);

}

3.2程序改进

将例3.1程序改为scanf输入

代码如下:

#include

#include

main()

{

doubles,alpha,I,v;

doublehgt;

printf("inputs,alpha,Iandv\n");

scanf("%lf%lf%lf%lf",&s,&alpha,&I,&v);

hgt=s*tan(alpha)+I-v;

printf("TriHeight=%lf\n",hgt);

}

3.3程序完善

将例3.1程序改为函数

代码如下:

#include

#include

main()

{

doubletri(doublea,doubleb,doublec,doubled);

doubles,alpha,I,v;

doublehgt;

printf("inputs,alpha,Iandv\n");

scanf("%lf%lf%lf%lf",&s,&alpha,&I,&v);

hgt=tri(s,alpha,I,v);

printf("TriHeight=%lf\n",hgt);

}

doubletri(doublea,doubleb,doublec,doubled)

{

doublez;

z=a*tan(b)+c-d;

return(z);

}

3.4程序扩展

将例3.1改为结构体

代码如下:

#include

#include

main()

{

structGc

{

doubles;

doublealpha;

doubleI;

doublev;

}gc;

doublehgt;

printf("inputs,alpha,Iandv\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("TriHeight=%lf\n",hgt);

}

将例3.1改为文件

代码如下:

#include

#include

voidmain()

{

FILE*fp;

doubles,alpha,I,v,hgt;

fp=fopen("D:

\\TURBOC2.0\\tri.dat","r");

if((fp=fopen("tri.dat","r"))==NULL)

{

printf("error");

exit(0);

}

printf("inputs,alpha,Iandv\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("TriHeight=%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("TriHeight=%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.计算圆面积(初始化)

/*201420050215yangrui02*/

#include

#include

#definePI3.14

main()

{

floatr,C;

r=2.0;

c=PI*r*r;

printf("c=%f\n",c);

}

2.水准测量(初始化)

/*201420050215yangrui03*/

#include

#include

main()

{

intBz1,Bz2,BRz1,BRz2,k1,k2;

floats1,s2,s,B1;

floath;

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.水平角测回法观测(初始化)

/*201420050215yangrui04*/

#include

#include

#definePI3.14

voidmain()

{

intd,e,f,g,h,i,j,k,l,m,n,o;

doublea1,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=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1