1、 测绘程序设计(C版) 实习报告 学 号: XXXXXXXXXXXXX 姓 名: XXXXX 班 级: XXXXXXXX 专 业: 测绘工程 课程名称: 测绘程序设计(C及Matlab) 指导老师: 肖根如 2015年12月 ﻬ目录 (请用 插入à引用à索引与目录 自动生成) 目录ﻩ- 2 - 1、实习目得 - 3 — 2、实习内容ﻩ— 3 — 2、1实习环境 - 3 - 2、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、实习成果
3、 — 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语言得基本运算符(主要就是算术运算符、赋值运算符)及其表达式,
4、特别就是自加运算符(++)与自减运算符(--)得使用。 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,结束
5、 (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
6、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%l
7、f%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^
8、2—4ac〈0,就输出“方程无实根”得信息。
编写程序:
#include〈stdio、h>
#include 9、 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 10、&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");
11、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;
12、 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”);
13、 printf("dmax5:"); printf(”10\n”);
printf(”dp5:"); printf(”2~5");break;
}
return 0;
}
2、2、6循环语句
例2、6求100~200间得全部素数.
编写程序:
#include 14、id 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);
15、 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[ 16、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 17、
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, 18、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 19、[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计算坐标方位角,使用结构体
20、 编写程序:
#include〈stdio、h〉
#include 21、0计算三角高程,使用文件方法。
编写程序:
#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);
}
22、 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编写计算三角高程代码
编写程序: 23、
#include 24、
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 25、 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)
{
d 26、ouble z;
z=a*tan(b)+c-d;
return (z);
}
3、4程序扩展
将例3、1改为结构体
代码如下:
#include <stdio、h>
#include 27、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;
28、 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% 29、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— 30、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)“改为 31、
“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、实习体会 32、
在四周得时间里,我们在专业老师得带领下进行了C语言程序实践学习.老师向我们简单得介绍了几个比较重要得实际操作.上机实验就是学习程序设计语言必不可少得实践环节,特别就是C语言灵活、简洁,更需要通过编程得实践来真正掌握它。对于程序设计语言得学习目得,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分得实际上机操作才能完成。
这段时间得学习我知道了C语言得基本特点有以下几点:
1. 语言简洁,使用灵活方便.
2. 运算符丰富,表达能力强。
3. 数计类型丰富。
4. 目标程序质量高,具有面向硬件系统得特点。
5. 具有结构化得控制语句与模块化得程序结构。
33、
6. 具有编译预处理功能。
7. 程序设计自由度大,可移植性好.
学习C程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时得上机时间。因为学时所限,课程不能安排过多得统一上机实验,所以希望学生有效地利用课程上机实验得机会,尽快掌握用C语言开发程序得能力,为今后得继续学习打下一个良好得基础.我学习了C语言得数据类型、常量与符号常量、变量、C语言得运算符与表达式、赋值运算符与赋值表达式、自增自减运算符以及逗号表达式等。这章介绍了结构化程序得三种基本结构、C语句概述、数据输出包括字符输出函数putchar()与格式输出函数printf()、数据输入包括字符输入函数getchar()与格 34、式输入函数scanf(),还有一些简单得C语程序设计举列等。个人认为课程上机实验得目得,不仅仅就是验证教材与讲课得内容、检查自己所编得程序就是否正确,课程安排得上机实验得目得可以概括为如下几个方面:
1、加深对课堂讲授内容得理解
课堂上要讲授许多关于C语言得语法规则,十分复杂,死记硬背就是不可取得.然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性得认识,加深对它得理解,在理解得基础上就会自然而然地掌握C语言得语法规定.对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解得偏差,这就是由于大部分学生就是初次接触程序设计,缺乏程序设计得实践所 35、致。
学习C语言不能停留在学习它得语法规则,而就是利用学到得知识编写c语言程序,解决实际问题。即把C语言作为工具,描述解决实际问题得步骤,由计算机帮助我们解题.只有通过上机才能检验自己就是否掌握C语言、自己编写得程序就是否能够正确地解题。
通过上机实验来验证自己编制得程序就是否正确,恐怕就是大多数同学在完成老师作业时得心态。但就是在程序设计领域里这就是一定要克服得传统得、错误得想法.因为在这种思想支配下,可能您会想办法去"掩盖”程序中得错误,而不就是尽可能多地发现程序中存在得问题。自己编好程序上机调试运行时,可能有很多您想不到得情况发生,通过解决这些问题,可以逐步提高自己对C语言得理解与程 36、序开发能力。
2、熟悉程序开发环境、学习计算机系统得操作方法
一个C语言程序从编辑、编译、连接到运行,都要在一定得外部操作环境下才能进行.所谓"环境"就就是所用得计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统得使用。
3、学习上机调试程序
完成程序得编写,决不意味着万事大吉.您认为万无一失得程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆错误.有时程序本身不存在语法错误,也能够顺利运行,但就是运行结果显然就是 37、错误得。开发环境所提供得编译系统无法发现这种程序逻辑错误,只能靠自己得上机经验分析判断错误所在。程序得调试就是一个技巧性很强得工作,对于初学者来说,尽快掌握程序调试方法就是非常重要得。有时候一个消耗您几个小时时间得小小错误,调试高手一眼就瞧出错误所在。
通过这次为数不多得几天计算机实践学习,我们了解了一些关于C语言得知识,理解巩固了我们C语言得理论知识,着对我们将来到社会工作将会有莫大得帮助。同时它让我知道,只要您努力,任何东西都不会太难。在科技高度发展得今天,计算机在人们当中得作用越来越突出。而C语言作为一种计算机得语言,我们学习它,有助于我们更好得了解计算机,与计算机进行交换,因此,C语 38、言得学习对我们特别重要.
以上就是我得一点学习心得,希望能更好得运用到学习中去。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、水准测量(初始化)
/* 2ya 39、ngrui03 */
#include<stdio、h〉
#include 40、);
}
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;
41、 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 42、\n",angle);
}
4、计算三角高程(初始化)
/* 2yangrui05 */
#include 43、dio、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,&BRz 44、2);
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,angle 45、1,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);
46、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 a 47、nd 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 48、);
else
printf("error");
}
10、计算三角形面积(if)
/* 2yangrui11 */
#include<stdio、h〉
#include
main()
{
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818