收藏 分销(赏)

第三周约瑟夫问题.doc

上传人:仙人****88 文档编号:7854981 上传时间:2025-01-22 格式:DOC 页数:4 大小:69KB 下载积分:10 金币
下载 相关 举报
第三周约瑟夫问题.doc_第1页
第1页 / 共4页
第三周约瑟夫问题.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
实验3(第3周实验指导) 约瑟夫序列 一、实验题目 求解《约瑟夫序列》的问题 二、实验课时   2课时。 三、实验目的   1.掌握“管理信息系统”书本第3章的相关内容 2.学习“单向链表”的数据结构及其有关操作 3.学习编写程序 四、实验内容 1. 学习约瑟夫序列 2. 学习《约瑟夫序列》程序的例子(本例从一号开始报数) 3.作业:编写程序求解以下问题,现有运动会门票要赠与你们班(两个班各有67人,学号从1到67)的10个幸运儿,要求采用约瑟夫序列来抽签,全班以学号顺序排号围坐在一张圆桌周围。从编号为18的人开始顺序报数,数到18的那个人出列;他的下一个人又从1开始报数,数到18的那个人又出列;依此规律重复下去,直到圆桌周围的剩下10个人就是幸运儿。程序有如下要求: a) 读取你们班名单文本文件的内容,存入一个单向链表,并以学号排序,节点要求保存学号,姓名和性别等信息。 b) 针对这个链表进行以上的问题求解。 c) 程序输出10个幸运儿的学号,姓名,性别 五、实验报告要求 1. 独立完成,作业交电子版 2. 给出程序源代码。 3. 写出10个幸运儿的名字 4. 写实验心得或小结。 程序代码:#include <stdio.h> #include <stdlib.h> typedef struct node { int number; char info[100]; //将学生的学号,姓名,性别等信息都利用info[]来存储 struct node *next; }dlnode,*dlink; struct node *head,*p,*temp1,*temp2; FILE *fp; struct node* Creatlist(int num) //创建班级列表 { int i; head=(dlnode*)malloc(sizeof(dlnode)); head->number=1; head->next=head; p=head; if((fp=fopen("E:\\Program Files\\class1.txt","rb"))==NULL) //打开存储学生信息的文本class2.txt { printf("\nCannot open file strike any key exit!"); exit(1); } fgets(head->info,100,fp); //头结点可用于存储标题信息 for(i=1;i<=num;i++) { temp1=(dlnode*)malloc(sizeof(dlnode)); temp1->number=i; fgets(temp1->info,100,fp); //将每个学生的信息导入入相应的info字符数组中, //每个学生对应一条info[]信息 temp1->next=p->next; p->next=temp1; p=temp1; } p=head; printf("班级名单如下:\n"); printf("序号 学号 姓名 性别\n\n"); printf(" %s\n",head->info); while(p->next!=head) { printf(" %s\n",p->next->info); p=p->next; } return head; } void drowlots(dlnode *head,int num,int m) //主处理函数 { int i,j; p=head; i=1; j=num; while(j!=10) { if(i==m&&p->next!=head) { temp2=p->next; printf(" %d \n",temp2->number); //可输出被淘汰的学生的序号 p->next=temp2->next; free(temp2); i=1; j=j-1; } else { if(p->next==head) i--; p=p->next; i++; } } p=head->next; printf("\n10名幸运儿如下:\n\n"); printf("序号 学号 姓名 性别\n\n"); printf(" %s\n",head->info); while(p!=head) { printf(" %s\n",p->info); p=p->next; } } void main() //主函数 { int n,m; n=67; head=Creatlist(n); printf("输入报数的编号:"); scanf("%d",&m); drowlots(head,n,m); system("pause"); } 3.实验心得 在本实验中,存在的难点是就是如何导入文件已经如何建立链表,特别是在导入文件的过程中我也遇到了门槛,就是在写导入路径时,WIN7系统只识别英文,汉字和数字是无法识别,比如文档一班.txt在路径D的文件programfiles下是无法读入的,所以应该把文档名一班.txt更改为class1.txt才能被识别!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服