C语言课程设计报告约瑟夫环胡存夫.docx
- 文档编号:28472323
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:4
- 大小:17.55KB
C语言课程设计报告约瑟夫环胡存夫.docx
《C语言课程设计报告约瑟夫环胡存夫.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告约瑟夫环胡存夫.docx(4页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告约瑟夫环胡存夫
C语言课程设计报告(约瑟夫环)胡存夫
沈阳航空航天大学 课程设计报告 课程设计名称:
C语言课程设计 课程设计题目:
约瑟夫环 院:
计算机学院 专 业:
计算机科学与技术 班 级:
3410301 学 号:
2013040103023 姓 名:
胡存夫 指导教师:
丁一军 沈阳航空航天大学课程设计报告 目 录 1课程设计介绍............................................................................................................1课程设计内容及要求............................................................................................1系统需求................................................................................................................12课程设计原理............................................................................................................3课设题目粗略分析................................................................................................3功能模块图.....................................................................................................5流程图分析.....................................................................................................53调试与分析..............................................................................................................10调试过程..............................................................................................................10
沈阳航空航天大学课程设计报告 原理图介绍 第三步:
第二次,1号出列1312约瑟夫环原理演示图3456772484第一步:
给第一个人赋初始密码为:
20则从它开始向下走20次,到6第四步:
第三次,4号出列最后排序后的密码序列:
第二部:
第一次停下的位置,此时6号出列,并将他的值作为新的m值,即:
新的m=8;从7好开始继续向下走8次,到186312447127345图约瑟夫环原理演示图 4 沈阳航空航天大学课程设计报告 功能模块图 Case1:
一个简单的输出函数,用于说明约瑟夫环;voidinstruction()Case2:
建立的约瑟夫环,并输出已建立的约瑟夫环:
createList(LNode**ppHead,intn)输出该约瑟夫环的每个人的出列顺序:
jose(LNode*ppHead,intCase0:
default:
输入0,退出exit(0); 主函数调用函数;main()菜单函数;voidmenu()图约瑟夫环函数调用关系图 流程图分析 5 沈阳航空航天大学课程设计报告 1. Main()函createList;创建储存玩家密码的循环单链表的方法从主函数中获取玩家信息n如果n>0是否退出创建循环单链表,储存各个玩家密码创建链表完成返回主函数main()图创建链表函数的数据流程图 2. 6 沈阳航空航天大学课程设计报告 Main()函jose();出队函数出队处理的方法从循环链表中按初始密码依次扫描,找出对应的玩家序列输出其持有的密码i=ppHead->pwd;j=ppHead->num;移动浮标指针m_pwd=ppHead->pwd;输出密码后,删除相应的结点,并释放所占的储存空间free(ppHead);ppHead=p->next;图出队函数的数据流程图 3.voidinstruction(){ printf(\\\n\ printf(\约瑟夫环:
\\n\ printf(\编号为1,2,3,4?
n的n个人按顺时针方向围坐一圈,每人持有一个密\\n\ 执行完后返回主函数 7 沈阳航空航天大学课程设计报告 printf(\码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\\n\ printf(\按顺时针方向自1开始顺序报数,报到时停止.报m的人出列,将他的密码\\n\ printf(\作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\\n\ printf(\直到所有人全部出列为止.编程打印出列顺序.\\n\ printf(\ return0;} 4菜单模块voidmenu(){ printf(\ 约 瑟 夫 环 *****************************\\n\ printf(\ \\n\ printf(\ [1]约瑟夫环问题的阐述 \\n\ printf(\ [2]按要求求解约瑟夫环 \\n\ printf(\ [0] 退 出 \\n\ printf(\ 欢 迎 使 用 !
****************************\\n\ } 8
沈阳航空航天大学课程设计报告 5. 9 沈阳航空航天大学课程设计报告 Main()开Menu()功能菜单选择要执行的操作功能1:
约瑟夫环说明功能2:
按要求求解约瑟夫环输入总人数n输入开始上线数:
功能3:
退出系统输入每个玩家的密码调用:
createList(&ppHead,n);jose(ppHead,m);函数求解所需的密码序列图主函数数据流程图 程序运行完,自动返回到功能菜单 3调试与分析 调试过程 在调试程序是主要遇到一下几类问题:
这是一个使用循环链表的经典问题。
本程序开始运行界面如下:
10 沈阳航空航天大学课程设计报告 图约瑟夫环开始运行选择1进入约瑟夫环问题阐述。
界面 11 图约瑟夫环问题阐述 沈阳航空航天大学课程设计报告 ①选择2,输入下列数据测试:
请输入总人数n:
7请输入开始上限数m:
20; 请依次输入每个人的密码:
3172484出队顺序:
6147235 12 图约瑟夫环测试1 沈阳航空航天大学课程设计报告 ②继续选择2,输入下列数据测试:
请输入总人数n:
5请输入开始上限数m:
30 请依次输入每个人的密码:
34567出队顺序:
53124 13 图约瑟夫环测试2
沈阳航空航天大学课程设计报告 ③继续选择2,输入下列数据测试:
请输入总人数n:
8请输入开始上限数m:
14 请依次输入每个人的密码:
345678910出队顺序:
67283514 14 沈阳航空航天大学课程设计报告 测试完成,选择0退出。
. 图约瑟夫环测试3 15 沈阳航空航天大学课程设计报告
沈阳航空航天大学课程设计报告 } printf(\最后一个出列是%d号,密码是:
%d\\n\free(ppHead);//释放头结点 voidinstruction(){ printf(\\\n\ printf(\约瑟夫环:
\\n\ printf(\编号为1,2,3,4?
n的n个人按顺时针方向围坐一圈,每人持有一个密\\n\ printf(\码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\\n\ printf(\按顺时针方向自1开始顺序报数,报到时停止.报m的人出列,将他的密码\\n\ printf(\作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\\n\ printf(\直到所有人全部出列为止.编程打印出列顺序.\\n\ printf(\ return0;} voidmenu(){ printf(\ 约 瑟 夫 环 *****************************\\n\ printf(\ \\n\ printf(\ [1]约瑟夫环问题的阐述 \\n\ 19 沈阳航空航天大学课程设计报告 printf(\ [2]按要求求解约瑟夫环 \\n\ printf(\ [0] 退 出 \\n\ printf(\ 欢 迎 使 用 !
****************************\\n\} /*主函数模块*/intmain(){ intn,m,x; LNode*ppHead=NULL;menu();{ printf(\请选择要执行的操作:
\scanf(\system(\switch(x){ case1:
printf(\\\n\ printf(\约瑟夫环:
\\n\ printf(\编号为1,2,3,4?
n的n个人按顺时针方向围坐一圈,每人持有一个密\\n\ printf(\码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\\n\ printf(\按顺时针方向自1开始顺序报数,报到m时停止.报m的人出列,将他的密码\\n\ 20 沈阳航空航天大学课程设计报告 printf(\作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\\n\ printf(\直到所有人全部出列为止.编程打印出列顺序.\\n\ printf(\\\n\ main(); break; case2:
printf(\请输入总人数n:
\ scanf(\ printf(\请输入开始上限数m:
\ scanf(\ createList(&ppHead,n); printf(\ printf(\出队顺序:
\\n\ jose(ppHead,m); printf(\约瑟夫环游戏结束!
\\n\ main(); break; case0:
} exit(0); default:
system(\ printf(\您选择的操作有误,请重新选择...\\n\\n\\n\main(); 21 沈阳航空航天大学课程设计报告 }} }return0; 22 沈阳航空航天大学课程设计报告 课程设计总结:
本次课程设计涉及到的范围很广,让本人能够比较系统的对C语言和数据结构进行一次整理和复习。
同时有了很多的体会和经验。
巩固了以前学过的C语言的知识,在这次课程设计中我体会到C语言超强的逻辑性,能够熟练使用VC++的编译环境,也对这两门课程有了新的认识,他们既有联系,又相互区别,在编写程序过程中要灵活应用对数据结构的理解有待加强,算法的知识面也有待于提高。
不同的人会选择不同的算法,所以即使同样的程序,不同的人必然会设计出不同的方案,所以以后的学习生活中,一定要广泛涉猎,掌握更多更好的解决问题的方法。
此次设计让我意识到程序设计是脑力劳动和体力劳动相结合的,没有平时基础的训练是不会写出高效的算法。
此次课程设计时间虽短,但却课设的过程是短暂的,但我所收获的是永恒的。
它让我尝到了学习的快乐,成功的喜悦,更让我懂得了不少做人的道理。
要完成一项任务或把东西学好就必须有足够的信心,持久的耐心,有面对困难无所畏惧的精神,这对我日后的学习和生活产生了深远一个影响。
指导教师评语:
指导教师(签字):
年月日课程设计成绩 23
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 约瑟夫 环胡存夫