




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计基础(C语言)课程设计学 院: 班 级: 学 号: 姓 名: 日 期:2012年7月课程设计要求:1.本课程设计作为程序设计基础(C语言)的期末考查,占学期总成绩的70%。2.本课程设计的题目由学生自选。3.知识点要求包括:(1)文件常用操作(打开,读/写数据,关闭等);(2)选择结构;(3)循环结构;(4)自定义函数;(5)数组的使用;(6)指针的定义与引用;(7)在相应的代码处注释出以上知识点;4.课程设计的主体包括题目名称,算法分析,流程设计,代码设计及运行结果。C语言程序设计题目名称: 约瑟夫环问题 算法分析:需求分析1问题描述任务:编号是1,2,,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。2.功能要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。3.测试数据m的初值设为20,n=7;对应密码依次是:3, 2, 6, 4, 5, 9, 8;正确的出列顺序为6 2 4 3 1 5 7概要设计 首先,设计实现约瑟夫环问题的存储结构。由于约瑟夫环问题本身具有循环性质,考虑采用循环链表。将循环链表的结点定义为如下结构类型: struct node /定义一个结构体(结点),其中包含一个数据域和一个指针域 int num; int pw; struct node *next; ; 流程设计:核心思想:构造一个空链表,成功则初始化个人信息。为每个人编号。每个人的密码。任选一个数M,约瑟夫环开始。M出列,释放节点。M的密码作为新密码继续约瑟夫环。知道所有人出列,结束。释放节点。代码设计:#include #include struct node /定义一个结构体(结点),其中包含一个数据域和一个指针域 int num; int pw; struct node *next; ; struct node *head;void main()/ 进入主函数 Haha();/调用无用的外部函数,作业要求汗!system(color 1e);printf(n信息与电气工程学院 郝立勇nnn);printf(*系统说明:编号是1,2,,n的n个人按照顺时针n);printf(*方向围坐一圈,每个人只有一个密码(正整数)。);printf(一开始任选一个n*正整数作为报数上限值m,从第一个仍开始顺时针方向自1开n*始顺序报数,);printf(报到m时停止报数。报m的人出列,将他的密码作为新的n*m值,从他在顺时针方向的下);printf(一个人开始重新从1报数,如此下去,n*直到所有人全部出列为止。);printf(此程序用来求出出列顺序。n); int n,i,b,m,j; head=(struct node *)malloc(sizeof(struct node); /申请一个空间(头结点 head) struct node *p,*q; /定义两个可以指向结点的指针 printf(n 请输入总人数:); scanf(%d,&n); q=head; for(j=1;jnext=(struct node *)malloc(sizeof(struct node); q=q-next; q-pw=b; q-num=j; q-next=head-next; printf(n请任意输入一个正整数m:); loop:scanf(%d,&m); if(mnext!=q) for(i=1;inext; p=q-next; q-next=p-next; printf(%d%dnn,p-num,p-pw); m=p-pw; free(p); printf(%d%dnn,q-num,q-pw); /输出最后一个结点 free(q); /释放最后一个结点 free(head); /释放头结点 printf( *约瑟夫环结束,欢迎下次光临*n); Void haha()/定义一个无用的外部函数Int a1;A1=1;运行结果:输入输出:输出:请输入总人数: 输入:7输出:请输入第1号同学的密码: 输入:3输出:请输入第2号同学的密码: 输入:2输出:请输入第3号同学的密码: 输入:6输出:请输入第4号同学的密码: 输入:4输出:请输入第5号同学的密码: 输入:5输出:请输入第6号同学的密码: 输入:9输出:请输入第7号同学的密码: 输入:8输出:请任意输入一个正整数m:输入:20输出:关于对文件的操作,另起一行:#include #define N 200 int cnt1, cnt2, xxN; float pj; void writeDat();void jsValue()int i,cnt=0;for(i=0;iN;i+)if(xxi%2)cnt1+;else cnt2+;if(i%2=0)cnt+;pj+=xxi; pj/=100.0;/(float)cnt;void read_dat(int xxN) int i,j; FILE *fp; fp = fopen(in.dat,r); for(i = 0; i 20; i+) for(j = 0; j 10; j+) fscanf(fp, %d, &xxi*10+j); printf(%d , xxi*10+j); printf(n); fclose(fp); void main() read_dat(xx); jsValue(); printf(nncnt1=%d,cnt2=%d, pj=%6.2fn, cnt1, cnt2, pj); writeDat(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版火车站吊顶设计与施工总承包合同
- 2025年度房地产居间服务合同范本英文
- 2025版房产抵押个人债务重组及债权保障合同
- 2025版新能源电池承包装卸运输合同
- 2025年度工业厂房租赁担保合同
- 2025年度建筑公司建筑材料采购及检测合同范本
- 二零二五年度城市更新项目地皮买卖合同
- 二零二五年度二手房交易意向金及房屋租赁纠纷解决合同
- 二零二五年度绿色建筑示范区承建包工合同书
- 二零二五年度商业综合体车位租赁管理协议
- 天津城投笔试试题及答案
- 外墙保温验收规范标准
- 血透患者皮下出血的护理
- 国企融资考试试题及答案
- 户外不锈钢雕塑施工方案
- 吴清忠人体使用手册
- 促进教师微课题研究合作的策略
- 良心装饰公司招商方案
- 《应用心理学专业方向实习》教学大纲
- 军人心理预防
- 国家基本药物制度培训课件
评论
0/150
提交评论