《课程设计说明书》模版

发布 2022-10-02 20:00:28 阅读 7397

1. 设计1 约瑟夫环问题

一、需求分析。

1、程序中,先输入人数 n,再输入输入 n 个正整数,作为这 n 个人的密码,接下来初始密码 m。2.

2、本程序只适用于一个案例。

3、测试数据 m=5 n=2 n 个人的密码依次 = 1 4 6 4 8。 出列为:2 1 3 5 4。

二、概要设计。

1、函数功能在main函数中实现。

void main(void)

int pn, sn,i;

linklist l;

printf("请输入总人数pn,和出示密码sn:")

scanf("%d%d",&pn,&sn);

int a[n];

a[0]=sn;//将a[0]保存为初始密码。

printf("请输入%d个人各自所持的密码:",pn);

for(i=1;iscanf("%d",&a[i]);

/创建链表。

creatlinklist(&l, pn);

/报数删人,输出结果。

printf("result:");

deldata(&l,pn,a);

2、程序包括两部分。

1)结点类型。

2)main函数实现约瑟夫环。

三、详细设计。

1、结点类型

typedef struct node

int data;//将这一圈人按从1~pn贴上序号。

struct node *next;

node,*linklist;

linklist head;

2、程序源**

#include<>

#include<>

#define n 100

typedef struct node

int data;//将这一圈人按从1~pn贴上序号。

struct node *next;

node,*linklist;

void creatlinklist(linklist *l,int pn)

node *p, *q;

int i;

*l) =linklist)malloc(sizeof(node));

p = l);

p->data = 1;

for (i=2;i<=pn;i++)

q=(linklist)malloc(sizeof(node));

q->data=i;

p->next=q;

p=q;p->next =(l);

void deldata(linklist *l,int pn,int a)

node *p, *q;

int k;

int j=1;

int i=0;//取每次将要删除的人的密码,用于下次报数的上限。

p=(*l);

for (;pn>=1;pn--)

k=1;while(k!=a[i])

p=p->next;

k++;printf("第%d个出列的人的序号是%d,其密码是%d.", j, p->data,a[j]);

j++;i=p->data;

p->data=p->next->data;

q=p->next;

p->next = p->next->next;

free(q);

void main(void)

int pn, sn,i;

linklist l;

printf("请输入总人数pn,和出示密码sn:")

scanf("%d%d",&pn,&sn);

int a[n];

a[0]=sn;//将a[0]保存为初始密码。

printf("请输入%d个人各自所持的密码:",pn);

for(i=1;iscanf("%d",&a[i]);

/创建链表。

creatlinklist(&l, pn);

/报数删人,输出结果。

printf("result:");

deldata(&l,pn,a);

四、运行结果及分析。

1)调试分析。

1.进入程序后按提示输入程序初始数据回车后即可得到结果,输出结果表示依次出列人的序号,程序结束。

2.若输入过程中输入有误,程序直接结束。

2)测试结果。

输入值不符合条件是:

五、总结。1.本程序比较简单,只有一个main函数,功能在main函数中实现,程序有待优化。

2.调试过程中,由于指针使用不当多次出现错误,对指针的设计还需要熟练掌握。

附:主要源**。

#include<>

#include<>

#define n 100

typedef struct node

int data;//将这一圈人按从1~pn贴上序号。

struct node *next;

node,*linklist;

void creatlinklist(linklist *l,int pn)

node *p, *q;

int i;

*l) =linklist)malloc(sizeof(node));

p = l);

p->data = 1;

for (i=2;i<=pn;i++)

q=(linklist)malloc(sizeof(node));

q->data=i;

p->next=q;

p=q;p->next =(l);

void deldata(linklist *l,int pn,int a)

node *p, *q;

int k;

int j=1;

int i=0;//取每次将要删除的人的密码,用于下次报数的上限。

p=(*l);

for (;pn>=1;pn--)

k=1;while(k!=a[i])

p=p->next;

k++;printf("第%d个出列的人的序号是%d,其密码是%d.", j, p->data,a[j]);

j++;i=p->data;

p->data=p->next->data;

q=p->next;

p->next = p->next->next;

free(q);

void main(void)

int pn, sn,i;

linklist l;

printf("请输入总人数pn,和出示密码sn:")

scanf("%d%d",&pn,&sn);

int a[n];

a[0]=sn;//将a[0]保存为初始密码。

printf("请输入%d个人各自所持的密码:",pn);

for(i=1;iscanf("%d",&a[i]);

/创建链表。

creatlinklist(&l, pn);

/报数删人,输出结果。

printf("result:");

deldata(&l,pn,a);

设计2 迷宫问题 (每个设计另起一页,注:提交时要将括号里面的内容删掉)

一、需求分析。

二、概要设计。

三、详细设计(含主要算法的流程图)

四、运行结果及分析。

五、总结。附:主要源**。

《课程设计说明书》模版

1.设计1 约瑟夫环问题 一 需求分析。1 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出个人的编号,只适用于一个案例。具体目标包括 1 实现单循环链表的初始化 2 理解约瑟夫环的定义,用循环找到每次报数人的序号 3 从单循环链表中删除节点,并判断链表空与非空的临界条件。2 构造一个含有n个...

课程设计说明书

材料化学。涂装工艺。班级 材料化学081 姓名。学号。指导教师。时间 二 一一年七月八日 19 09 56 目录。表面工程课程设计任务书 1 1 概况 2 1.1 设计任务书及目标 2 1.2 设计任务书 2 1.3 设计单位概况 2 1.4 设计原则 4 1.5 设计范围 4 1.6 设计技术标准...

课程设计说明书

一 题目 离合器接合叉零件加工工艺规程 及车 25外圆及端面夹具设计 二 时间 自年月日至年月日止。三 要求 1 编制离合器接合叉加工工艺规程一套。2 绘制离合器接合叉零件图一张。3 绘制夹具结构装配图一张。4 绘制夹具体图一张。5.编写设计说明书一份。目录。序言1 第一章零件分析2 1.零件的作用...