已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计课程设计报告学 院:地球物理与石油资源学院 班 级: 物探11101 姓 名: 李继伟 学 号: 201105968 班内编号: 7 指导教师: 陈义群 完成日期: 2013年3月9日 一、课程设计题目和要求题目:地震SEGY格式数据读写日期:2013年2月25日至2013年3月10日主要内容:1、 理解地震SEGY格式2、 使用结构体读取卷头和道头3、 高低字节序交换4、 二维动态数组5、 两种浮点格式数据读取6、 将读取的共炮记录保存为SURFER的GRD文本格式要求:1、 运行结果以SURFER的图片形式提交2、 源代码格式规范3、 认真撰写C语言程序设计课程设计报告4、 独立完成,严禁抄袭,逐一验收编译器:Microsoft Visual C+ 6.0二、源代码#include #include #include #include “surfer.h”#include “swap.h”#include “float.h”#include “binhead.h”#include “tracehead.h”void main () Struct SeismicSegyBinHead a; /卷头结构体 struct SeismicSegyTraceHead b; /道头结构体 unsigned int c; /无符号变量 FILE *fp; /文件指针变量 float k,*p; int m,n,x; fp=fopen(E:c语言地震SEGY格式数据读写数据float.sgy,rb); if (fp=NULL) printf(Cannot open file,press any key to exit!); exit(0); fseek(fp,3200,0); /开始读卷头 fread(&a,sizeof(a),1,fp); swap_n32(&(a.jobid); swap_n32(&(a.lino); swap_n32(&(a.reno); swap_n16(&(a.ntrpr); swap_n16(&(a.nart); swap_u16(&(a.hdt); swap_u16(&(a.dto); swap_u16(&(a.hns); swap_u16(&(a.nso); swap_n16(&(a.format); swap_n16(&(a.fold); swap_n16(&(a.tsort); swap_n16(&(a.vscode); swap_n16(&(a.hsfs); swap_n16(&(a.hsfe); swap_n16(&(a.hsfe); swap_n16(&(a.hslen); swap_n16(&(a.hstyp); swap_n16(&(a.schn); swap_n16(&(a.hstas); swap_n16(&(a.hstae); swap_n16(&(a.htatyp); swap_n16(&(a.hcorr); swap_n16(&(a.bgrcv); swap_n16(&(a.rcvm); swap_n16(&(a.mfeet); swap_n16(&(a.polyt); swap_n16(&(a.vpol); fread(&b,sizeof(b),1,fp); /开始读道头 swap_n32(&(b.tracl); swap_n32(&(b.tracr); swap_n32(&(b.fldr); swap_n32(&(b.tracf); swap_n32(&(b.ep); swap_n32(&(b.cdp); swap_n32(&(b.cdpt); swap_n16(&(b.trid); swap_n16(&(b.nvs); swap_n16(&(b.nhs); swap_n16(&(b.duse); swap_n32(&(b.offset); swap_n32(&(b.gelev); swap_n32(&(b.selev); swap_n32(&(b.sdepth); swap_n32(&(b.gdel); swap_n32(&(b.sdel); swap_n32(&(b.swdep); swap_n32(&(b.gwdep); swap_n16(&(b.scalel); swap_n16(&(b.scalco); swap_n32(&(b.sx); swap_n32(&(b.sy); swap_n32(&(b.gx); swap_n32(&(b.gy); swap_n16(&(b.counit); swap_n16(&(b.wevel); swap_n16(&(b.sstat); swap_n16(&(b.gstat); swap_n16(&(b.tstat); swap_n16(&(b.laga); swap_n16(&(b.sut); swap_n16(&(b.gut); swap_n16(&(b.lagb); swap_n16(&(b.delrt); swap_n16(&(b.muts); swap_n16(&(b.mute); swap_u16(&(b.ns); swap_u16(&(b.dt); swap_n16(&(b.gain); swap_n16(&(b.igc); swap_n16(&(b.igi); swap_n16(&(b.corr); swap_n16(&(b.sfs); swap_n16(&(b.sfe); swap_n16(&(b.slen); swap_n16(&(b.styp); swap_n16(&(b.stas); swap_n16(&(b.stae); swap_n16(&(b.tatyp); swap_n16(&(b.afilf); swap_n16(&(b.afils); swap_n16(&(b.nofilf); swap_n16(&(b.nofils); swap_n16(&(b.lcf); swap_n16(&(b.hcf); swap_n16(&(b.lcs); swap_n16(&(b.hcs); swap_n16(&(b.year); swap_n16(&(b.day); swap_n16(&(b.hour); swap_n16(&(b.minute); swap_n16(&(b.sec); swap_n16(&(b.timbas); swap_n16(&(b.trwf); swap_n16(&(b.grnors); swap_n16(&(b.grnofr); swap_n16(&(b.grnlof); swap_n16(&(b.gaps); swap_n16(&(b.otrav); printf( hns=%dn format=%dn tracl=%dn tracr=%dn,a.hns,a.format,b.tracl,b.tracr); printf(输入第n+1炮:);scanf(%d,&x); fseek(fp,(3840+(a.hns)*4*264)*x+3840),0); /文件定位,开始读道头数据。这里地方根据字节数可以读任何一炮的数据。每一炮的字节数是3840+7000*4*264, p=(float *)malloc(sizeof(float *)*(a.hns); /有264道,每道有7000个数据,二维动态数组。分配指针数组。 for(m=0;m(a.hns);m+) /分配每个指针所指向的数组。 pm=(float *)malloc(sizeof(float)*264); for(n=0;n264;n+) /读取每一道的数据 fseek(fp,(3840+(a.hns)*4)*n+240*n),0); /文件定位。字节数等于3840+7000*4*n(每个数据4个字节,有7000个数据)+240*n(道头有240个字节,n道) for(m=0;m(a.hns);m+) fread(&c,4,1,fp); if(a.format)=5) /如果是iee格式 union_x.val2=c; swap_uint(&c); pmn=union_x.val1; if(a.format)=1) /如果是ibm格式 swap_uint(&c); k=ibm2ieee(c); pmn=k; writeSurferTextGrd (p,(a.hns) ,264); /把道头数据用surfer格式保存。函数的调用。 fclose(fp); for(m=0;m264;m+) /释放 free(pm); free(p); 三、运行结果1.程序输出结果:2.原炮图第2炮:3.Surfer9运行后的第2炮图:四、总结和体会(一)总结:1,程序编程(1)要弄懂老师的课设要求是什么,弄清方向,整理资料,确定一个编程的方向。头脑中的有一个清晰的认识或思路。(2)在编程的过程中我们要知道函数是什么。注意如何申明,调用等。如在程序中就对函数的定义,函数的调用使用的相当的多,尤其的高低字节的转换。(3)结构体的运用。什么是结构体,结构体的定义,结构体变量的定义,以及结构体变量内元素的引用方法.如struct SeismicSegyBinHead a。当结构体成员为指针的时候,每当给这个成员赋值之前必须先为这个结构体成员分配一个内存空间(4)数组的运用。要知道什么是数组,数组的定义,数组的赋值,数组里面值怎么引用,包括一维数组和二维数组。如运用二维动态数组。(5)位运算。这应该是最重要的。完成课设任务的必不可少的一部分。其中 (a),文件指针变量fp及其定义形式FILE *fp;(b),文件的定位fseek函数的运用,基本调用形式fseek(fp,offset,origin);(c),文件的打开与关闭,运用fopen和fclose函数如fp=fopen(c:float.sgy,rb)=NULL用fopen()函数来实现打开文件,其中文件使用方式“r”为只读,“w”为只写形式;(d),二进制数据块的输入与输出,运用fwrite函数和fread函数。2操作时问题分析 编好后进行运行时,有一些遗漏问题,如大括号的使用是否对起;语句的使用是否错误;对一个变量是否定义;输出是否有遗漏;数据的使用是否符合规定,定义是否正确等。对于调试,要看程序是否运行且达到预期效果,按照思路能够正确的使用。(二)心得体会 :这次的课程设计实验是对我们进入大学以来学习C语言结果的一次大考验。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。但是,我相信在今的学习中,一定能把它解决好。当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 我不仅巩固C语言程序设计课程学习的内容,掌握设计的基本方法,强化上机动手能力。在编程中,特别是结构体,指针和位运算部分,几乎忘得差不多了。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。当读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。有句话叫“知之为知之,不知为不知,是知也”,要懂得请教同学或老师,这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025及未来5年隔墙板项目投资价值分析报告
- 重庆市部分中学2024-2025学年高二上学期期末联考物理试题(含答案)
- 风电场监控系统与报警方案
- 历史七年级上册 第3课 远古的传说
- 一年级数学计算题专项练习1000题汇编
- 小区雨水回收与利用方案
- 建筑施工进度调整方案
- 2025年表演台词考试真题及答案
- 育婴师安全防火知识课件
- 林浆纸一体化建设项目施工方案
- 疯狂动物城赏析课件
- 2025年中移铁通河南分公司招聘笔试参考题库含答案解析
- 血液透析室一次性医疗用品管理
- Module7Unit1Hisdogcanhelphim(课件)(一起)英语五年级上册
- 外墙打磨合同协议书(2篇)
- 椭圆的定义 课件-2024-2025学年高二上学期数学北师大版(2019)选择性必修第一册
- 用探究式化学实验支持学生证据推理能力发展
- 接收预备党员表决票(样式)
- 特立帕肽治疗骨质疏松性骨折中国专家共识(2024版)解读
- 工程伦理课后习题答案(打印版)
- 数控车床点检保养记录表(部位示意图)
评论
0/150
提交评论