ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:403.88KB ,
资源ID:20118728      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20118728.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言组数游戏程序设计实习报告.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c语言组数游戏程序设计实习报告.docx

1、c语言组数游戏程序设计实习报告 C程序设计实习报告题目:组数游戏学 院: 机电学院 专 业: 机械设计制造及自动化 * * * 班级学号: * * * 第一章:题目要求 1.1:要求 1.2:提示第二章:需求分析第三章:概要分析3.1:系统结构图3.2:软件运行开发平台3.3:设计思想第四章:详细设计4.1:主函数4.2:结构体4.3:各功能模块函数4.3.1:输入存储模块4.3.2:位数变化模块4.3.3:排序模块4.3.4:返回原值模块4.3.5:输出模块第五章:测试、结果分析5.1:程序运行5.2:文本文件第六章:总结参考文献附录第一章 题目要求1.1 要求:设有n个正整数(n=20),

2、将它们连成一排,组成一个最大的多位数。并将输入数据添0后的数字、数位、添0个数存入到文件中。程序输入:n,程序输出:n个数连成的多位数。1.2 提示:设计思路:可以将问题这样变化一下:比如输出的是123、2、33、1006、12这样几个数字。先找出最大数字的位数为4位,再将所有的数字变成4位数:1230、2000、3300、1006、1200然后进行排序:3300、2000、1230、1200、1006这样将后面加上的0去掉然后连接起来的数就是最大的多位数。即:332123121006第二章 需求分析根据题目要求,由于需要输入数据添0后的数字、数位、添0个数存入到文件中,所以应提供文件的输入与

3、输出等操作;程序中需要得到最大的多位数,要得到最大数需要进行计算数位、添加0、排序、去0等操作。第三章 概要分析3.1 系统结构图根据题目要求,该系统的结构图如图(3.1)所示:数图(3.1)3.2 程序开发运行平台程序运行与开发平台: Microsoft Visual c+ 6.03.3 设计思想 根据题目要求,可以将系统分为输入存储、数位变化、排序、去0、输出五个模块,输入模块主要是完成数据的输入,并将数据存储到文件中,数位变化模块主要是将所有的数据全变成位数相同的数,便于比较,排序是重要的步骤,它完成了数字从大到小的排列,为输出做准备,去0操作是将原数值计算出来,输出模块只要将去0操作后

4、的数据顺序输出就可得到题目要求的数值。各个模块之间比较独立,都由主函数一一调用,结构清晰。模块之间主要通过数位变化及添加0的个数相互传递信息,结构严谨。第四章 详细设计4.1 主函数主函数设计要求简洁,能实现各模块功能的调用,它分为数据输入储存、位数计算、位数变化、排序、去0操作、输出操作。它的程序如下,程序流程图如图(4.1.1)所示:main() input_num(); add_zero(); sort_num(); delete_zero(); printf_num(); 4.2 结构体输入的数据个数为n,因为输入数据中,每个数据要用到的数字信息有:数字大小、数字位数、将要添加0的个数

5、。这三个信息构成一个整体,故选择使用结构体比较合适。而输入数据中n=20,故可以建立20个结构体ZHANG。结构体程序如下:typedef struct int num; int digit; int zero; ZHANG; ZHANG a20;4.3 各功能模块函数设计4.3.1 输入及存储模块 在结构体中,对程序的数据结构进行了分析与选择,选用结构体,并定义了结构体成员。int num;int digit;int zero;由于n为变量,为了便于其它函数的调用,因此n要在函数外定义。即 int n。输入函数中需要输入数字个数n,然后循环输入每个数字,所以根据以上分析可以得到数据输入程序为

6、:void input_num() int i; printf(input n:); scanf(%d,&n); 否 for(i=0;imax.num) max=ai; 输入模块中还要求将输入的数字、添0个数、数位保存到文本zhangqy.txt中。所以可以在输入数据后调用一个load函数将这些数据保存到文件中。load函数程序如下:void load() FILE *fp; int i; if (fp=fopen(zhangqy.txt,r)=NULL) printf(nCannot open this filen); return; for (i=0;in;i+) fscanf(fp,%d

7、%d%d,&ai.num,ai.digit, ai.zero); 图(4.3.3) fclose(fp);其算法流程图如图(4.3.3)所示综上所述,输入及保存模块的完整程序如下:void input_num() int i; printf(input n:); scanf(%d,&n); for(i=0;imax.num) max=ai; save(); 输入及存储模块的算法流程图如图(4.3.4)所示: 是 否 否 图(4.3.4) 4.3.2 添0操作(位数变化模块)要实现位数的变化,只需要在数据后添加0即可,添加0即数据乘以10,欲达到最大位数,就要每个数据乘以若干个10,模块一中已经

8、计算出了每个数字的位数,且最大位数也知道。所以要实现位数变化即简单了很多。即:while(ai.digitmax.digit) ai.num*=10; ai.digit+=1;由于在程序后面还涉及到去0操作,所以必须要在结构体中记录下添加了多少个0。即zero的值。即:ai.zero+=1;题目要求将添加0后的数字、数位、添加0的个数存入到文件中,所以可 以在添加0后调用一个save函数完成此功能。save函数的程序如下,它的算法流程图如图(4.3.5)所示:void save() FILE *fp; int i; if(fp=fopen(zhangqy.txt,w)=NULL) printf

9、(n Can not open filen); return; for(i=0;in;i+)fprintf(fp,数字:%d 数位:%d 添0个数:%dn,ai.num,ai.digit,ai.zero); fclose(fp);综上所述,模块二的程序如下:void add_zero() int i; 是 否 load(); for(i=0;in;i+) while(ai.digitmax.digit) 图(4.3.5) ai.num*=10; ai.digit+=1; ai.zero+=1; for(i=0;in;i+) printf(数字:%d数位:%d添0个数:%dn,ai.num,ai

10、.digit,ai.zero); save(); 模块二的算法流程图如图(4.3.6)所示: 否 是 否 是 图(4.3.6)4.3.3 排序模块 将扩大的数字进行排序时,选用选择排序法,即在n个数中找到最大的一个数使它与a0互换位置,然后从剩下的n-1个数中,再找到一个最大数使它与a1互换位置,依次类推,直到剩下最后一个数为止。在比较时通常需要设一个数据,将值进行传递,达到交换的目的。故模块三的程序如下,算法流程图(4.3.7)所示:void sort_num() int i,j,k; 是 ZHANG t; for(i=0;in-1;i+) 否 是 k=i; for(j=i+1;jak.nu

11、m) k=j; t=ai; ai=ak; ak=t; 图(4.3.7) printf(顺序为:); for(i=0;in;i+) printf(%d,ai.num); printf(n); 4.3.4 返回原值模块(去0操作)此操作的目的是将所有乘以10若干次的数值返回原值,这就需要用到结构体中记录的乘以10的次数,也就是zero的值,可以将现在的数字累除以10,相应的zero的值也减去1,同时将zero的值与0进行比较,如果大于0则继续除,如果小于或等于0则程序运行停止。程序如下:void delete_zero() int i; for (i=0;i0) ai.num/=10; ai.di

12、git-=1; ai.zero-=1; for(i=0;in;i+) printf(数字:%d数位:%d添0个数:%dn,ai.num,ai.digit,ai.zero); 去0模块的算法流程图如图(4.3.8)所示: 否 否 是 图(4.3.8)4.3.5 输出模块(输出最大数字)将模块四中返回的原值连续输出就是最大数值,程序如下:void printf_num() int i; printf(最大数:); for(i=0;in;i+) printf(%d,ai.num); printf(n); 第五章 运行结果分析5.1 程序运行程序运行结果如图(5.1.1)所示: 图(5.1.1)5.2

13、 文本文件文本文件的存储如图(5.2.1)所示:图(5.2.1)第六章 总结学习心得体会:在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。取得了不少成果。通过认真编写程序和实习报告,描述实习操作和心得体会,总结在这次实习中的业务收获,作出自我评价。我们基本掌握并学会C语言程序设计的各个知识点。掌握结构体和指针的联合使用,学会文件的读入与输出等操作方法,认真编写实习日志和实习体会。并通过各种途径查找所需资料,拓宽视野,培养自学能力。一周的实习,我体会到了老师和同学们的热心帮助,无论面对学习中多大的困难,同学们都会帮助你,老师也会帮助你,大家就像兄弟姐妹一样。我们不会的地方就去问学习比

14、较好一些的同学,或者去问老师,老师和同学们总是那么的热心,只要你还不明白,不论你问多少次,老师和同学们都会耐心地给你细心的讲解,直到讲会为止。在计算机机房里同学们积极的对C语言进行巩固与实习,老师热心的讲解同学们提出的问题和实习过程中应该注意的事项。在我们实习结束后每一个同学都把自己组里的成果展示给老师和大家,告诉大家编程的原理、方法等,使同学们既有动手能力,又能提高语言表达能力。这次实习是有益的,它不仅让我们学习到了C语言的知识,更让我们学习到了同学们之间的那种团结精神,为我以后踏入社会工作准备了很多良好的知识与经验。通过这几节课,我们集思广益,多练习,多思考。进行检查错误的时候认真仔细,不

15、放过每一个小的环节。这也告诉我们不管做什么事情都要认认真真,这样才能把事情做到最好。参考文献1:作者:谭浩强 书名:C语言程序设计 清华大学出版社出版 2005年7月第3版;2:作者:张冬梅 刘远兴 陈晶 王媛妮 书名:C语言课程设计与学习指导 中国铁道出版社出版 2008年7月第1版 3:书名:全国计算机等级考试公共基础知识 高等教育出版社出版 2004年5月第1版附录(系统源程序)程序如下: #include stdio.h typedef struct /*定义结构体类型*/ int num; int digit; int zero; ZHANG; ZHANG a20; void loa

16、d();void save();int n; ZHANG max; int getdigit(int a) /*计算各个数字的位数,并返回r值*/ int r=0; for(;a!=0;) r+=1; a/=10; return r; void load() /*加载,将函数中计算的数据加载到磁盘*/ FILE *fp; int i; if (fp=fopen(zhangqy.txt,r)=NULL) printf(nCannot open this filen); return; for (i=0;in;i+) fscanf(fp,%d%d%d,&ai.num,ai.digit, ai.ze

17、ro); fclose(fp);void save() /*将输入的数据保存到文件中*/ FILE *fp; int i; if(fp=fopen(zhangqy.txt,w)=NULL) printf(n Can not open filen); return; for(i=0;in;i+) fprintf(fp,数字:%d 数位:%d 添0个数:%d n,ai.num,ai.digit, ai.zero); fclose(fp); void input_num() /*数据输入及找出输入数据中的最大值并将数据保存到文件*/ int i; printf(input n:); scanf(%d

18、,&n); for(i=0;imax.num) max=ai; save(); void add_zero() /*添加0操作,并用zero在结构体中记录下各个数字添加0的次数并将改变后的数据 保存到文件中*/ int i; load(); for(i=0;in;i+) while(ai.digitmax.digit) ai.num*=10; ai.digit+=1; ai.zero+=1; for(i=0;in;i+) printf(数字:%d数位:%d添0个数:%dn,ai.num,ai.digit,ai.zero); save(); void sort_num() /*数字排序,用选择排

19、序法对添0后的数字排序并输出*/ int i,j,k; ZHANG t; for(i=0;in-1;i+) k=i; for(j=i+1;jak.num) k=j; t=ai; ai=ak; ak=t; printf(顺序为:); for(i=0;in;i+) printf(%d,ai.num); printf(n); void delete_zero() /*去0操作,将zero的值与0比较,变回原输入数据*/ int i; for (i=0;i0) ai.num/=10; ai.digit-=1; ai.zero-=1; for(i=0;in;i+) printf(数字:%d数位:%d添0个数:%dn,ai.num,ai.digit,ai.zero); void printf_num() /*输出数据*/ int i; printf(最大数:); for(i=0;in;i+) printf(%d,ai.num); printf(n); main() /*主函数,由主函数调用各个函数*/ input_num(); add_zero(); sort_num(); delete_zero(); printf_num();

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

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