《编写一个c语言程序设计报告.docx》由会员分享,可在线阅读,更多相关《编写一个c语言程序设计报告.docx(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、特殊环境机器人卓越人才班课程设计报告(论文)题目:基于C语言程序设计专业班级: 电气工程及其自动化、电子信息工程姓名: 曾伟 、赵世林 时 间:2015.02.262015.03.07指导教师: 王建荣 完成日期:2015年03月 05日C程序设计任务书1 设计目的与要求编写一个c语言程序,要认真并准确地理解有关题目要求,独立完成c语言程序设计,题目要求如下:(1) 有n个人围成一圈,顺序排号。(2) 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子。(3) 一直重复此过程,直至剩下最后一个人。(4) 问最后留下的是原来第几号的那位。2 设计内容(1) 画出游戏规则原理图,标明其规则的
2、逻辑关系。(2) 画出c语言流程图。(3) 开始编写c语言程序,运行调试直至得出理想程序。(4) 实践与程序结合验证并得出结论,总结分析实验设计过程。3 编写设计报告写出从思考到构建模型再到编写出完整的程序的全过程,附上有关资料和图纸,加上一旁的注解,最后还有整个设计后的心得体会。4答辩 (1)在规定时间内,完成整个设计过程的完美叙述。(2)认真全面的回答相应的提问。目录1 引言 12 总体设计方案 12.1 程序设计思路 12.1.1游戏规则简介流程图22.1.2 程序思路流程图.32.2 Raptor流程图431 c语言程序分析 (非指针)53.2 c语言程序分析(指针).64 总结与体会
3、 75参考文献 7附录1 8C语言程序设计摘要: 本设计主要是完成此游戏的仿真:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。编写这个程序可以快速的得出游戏结果。同时也锻炼了我们的c语言程序的运用。关键词:c语言,程序设计,游戏方案 1引言C语言作为一门最通用的语言,在过去很流行,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外地要学习它。在大学里,很多学校都把谭浩强教授的C程序设计作为入门教材,这是绝佳的选择。然而,要更进一步,更全面而深入地学习呢?显然有点力不从心。本书正是为了弥补这个缺憾而写的,希望能对想比
4、较全面而深入学习C语言程序设计的人有所帮助。从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。【1】C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既适于系统软件,又方便地用来写应用软件。【2】2总体设计方案2.1设计思路为了更加全面的学习c语言,本游戏我们采用的多种解题方法,其中编程时用了指针和非指针两种方法,同时也是用raptor软件将游戏描述出来。在编程之前,我们先分析了
5、游戏的规则原理,并用图文表示出来,以便使编程的思路更加清晰。然后我们设计程序思路流程框图,并用raptor还原流程图,随后开始规划编程。最后对程序进行分析改进,并且总结此次课程设计的优点和哪些不足。2.1.1游戏规则简介流程图 图一:游戏规则简介流程图2.1.2程序思路流程框图由题意知,若共有n个人,从第一个人开始报数,123,123,123每个报3的人出局,然后以最后一个报数的人为准,第一个人接着最后一个人报的数再继续报数。如此循环下去,最后只会剩下一个人。再将这个人的编号输出即可。可以先将所有的人赋初值1,num赋初值0,i赋初值0。进行报数时,进行一次循环相当于一次检测,i+1。若该人的
6、值为1,就报数,即num+1。报3的人(num为3)出局赋值为0,且num又赋值为0。当检测到最后一个人时i=n,让i又赋值0,进行下一轮检测。如此循环检测直到出局人数为n-1时结束。这样就可以在计算机上实现模拟报数与出局。(注意每轮检测已经出局的人也会被计算机检测是否为1。)输入确定的人数n并排序报数每报一次执行一次循环,直到出局人数达到n-1 未出局的人报数 num+真 num=3 假 ai0num0out+ i+真 i=n 假 i=0 输出最后剩下的那个人的编号表一:2.1.2程序思路流程框图2.2 Raptor流程图集训作业Raptorraptor-3.rap 图二:Raptor流程图
7、31 c语言程序分析 (非指针)#include stdio.hvoid main() int i=0,n=0; int out=0;/退出的人数 int num=0;/报数 int a2048=0;/2048表示人数最大值,0表示退出圈子 printf(input number n:); scanf(%d, &n);/输入参加游戏人数for(i=0;in;i+)ai=1;/将数组中前n项置1,然后进行排队 i = 0;while(out!=n-1)/出局人数为n-1时停止循环 if(ai=1)num+;/开始依次报数 if(num=3)ai=0; num=0; out+;/报3的出局,以及出
8、局人数计数器+1,以及报数置1,方便接着报数 i+; if(i=n) i=0;/报数至最后一名,然后最后一名的后一位报数置0,从头开始再报数 /此大循环完成报数以及进行出局操作 for(i=0;in;i+) if(ai=1) printf(最后留下的人是%d号.n, i+1);/最后数组中只有最后一个位置值为1,就是剩下的最后一个人,输出这个人的编号 break;3.2 c语言程序分析(指针)#includestdio.hvoid main()int x,y,m;/x是为指针服务的,y是报数的号,m是指出局的人数intn,num100,*p;/num是游戏人数最大值printf(input n
9、umber: n=);scanf(%d,&n);/输入参加游戏人数p=num;/给p赋初始地址for(x=0;xn;x+)*(p+x)=x+1;/将每个人用指针编号,方便以后查找x=0,y=0,m=0;/各个参数置0,开始运行主程序while(mn-1)/m是指出局的人数,因为有n个人,直至最后剩下一个人,所以出局(n-1)个人if(*(p+x)!=0)/判断这个号(原来的序号)是否出局y+;/这个号没有出局,就报数,计数器加1if(y=3)/报3的出局*(p+x)=0;/将出局的这个人标记y=0;/使计数器置零,以便后面的人报数m+;/出局人数计数器加1x+;/将指针后移,虽然x不是指针,但
10、p+x就是指针了,所以x就是为指针服务的if(x=n)/如果指针移到了尾部,则返回到头部x=0;/以上的循环目的就是一个一个的出局,找到最后的一个人while(*p=0)/用这个可以只判断所找号的前面的号全部为0,只要指针值为1,就是最后一人p+;printf(最后一人是原来的第%d人n,*p);4 总结与体会这次的课程设计实验是对我们进入大学以来学习C语言结果的一次大考验。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。但是,我相信在今的学习中,一定能把它解决好。当今计算机
11、应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。团队精神不可少,分工合作也是必须的,对本组人员进行整理,分析其特点,再分配任务,然后进行综合应用,最后对所需资料及要编的程序进行整理得出最后程序。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力5参考文献1 周伟,淮阴师范学院,数学科学学院,c语言程序设计课程教学研究,维普期刊资源整合服务平台。2 谭浩强,c语言程序设计(第四版),清华大学出版社,北京,2010年。附录1i是否等于n?num是否等于3?否是i0 i+ 否ai0,num0,out+ 是未出局的人报数 num+ 否是输入确定人数n并排序C语言程序设计思路输出最后剩下的那个人的编号出局人数是否达到n-1图三:C语言程序设计思路
限制150内