求用c语言编写约瑟夫环的程序

[复制链接]
查看11 | 回复4 | 2008-10-5 14:10:44 | 显示全部楼层 |阅读模式
最好再有:1) 需求分析
以无二义性的陈述说明程序设计的任务,程序要做什么?明确规定:
①输入的形式和输入值的范围;
②输出的形式;
③程序所能达到的功能;
④列出初步的测试计划。
2) 概要设计
说明本程序中用到的所有数据类型的定义及含义、主程序的流程以及各程序模块的功能要求及各自之间的层次(调用)关系。
3) 详细设计
实现概要设计中定义的所有数据类型,对每个操作需写出伪码算法;对主程序和其他模块也都要写出伪码算法;画出函数的调用关系图。
最终实现的源程序要按照良好风格的程序书写规则来编写,要求结构清晰,重点函数、重点变量以及重点功能部分要加上清晰的程序注释。
4) 调试分析
测试数据,测试输出的结果(包括正确的输入及其输出结果和含有错误的输入及其输出结果)。
每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?)。
进行时间和空间复杂度分析,算法的改进设想。
5) 用户使用说明
说明如何使用最终发布的程序,详细列出每一步的操作步骤。
6) 测试结果
列出完备的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中的初步测试计划。
7) 附录
程序文件名清单。
【问题描述】
编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。
一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。
【基本要求】
1、利用单循环链表作为存储结构模拟此过程;

2、键盘输入总人数、初始报数上限值m及各人密码;

3、按照出列顺序输出各人的编号。
【测试数据】
m的初值为20;7个人的密码依次为:3,1,7,2,4,8,4。

回复

使用道具 举报

千问 | 2008-10-5 14:10:44 | 显示全部楼层
#includestruct list//建立一个结构体,包括每个人的编号,密码和下一级的指针{int id;int code;struct list *next;};typedef struct list list;//把结构体用list表示list* input(int n)//链表的初始化{list *p,*q,*l;int i,m;p=new list;l=new list;l->next=NULL;p=l;p->id=1;//第一个人的初始化scanf("%d",&m);p->code=m;for(i=2;ivoid main(){int m,n,s,i,j,flag,flag1,c; int a[999],b[100]; char control; do {flag=0;c=0;flag1=0;do{if(flag1==1) printf("\nInp...
回复

使用道具 举报

千问 | 2008-10-5 14:10:44 | 显示全部楼层
去网上下一些经典教材的书中源代码这么经典的问题,解法应该很好找~...
回复

使用道具 举报

千问 | 2008-10-5 14:10:44 | 显示全部楼层
#include#includetypedef struct node { int num; int password; struct node *next; }node, *LinkList; InitList(LinkList *L) { *L=(LinkLis...
回复

使用道具 举报

千问 | 2008-10-5 14:10:44 | 显示全部楼层
咳咳,我没看你的问题...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行