数据结构课程设计Word格式.docx
- 文档编号:1069597
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:99.65KB
数据结构课程设计Word格式.docx
《数据结构课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word格式.docx(13页珍藏版)》请在冰点文库上搜索。
1模块设计
2关键算法描述
3总体流程图
4重点模块或算法流程图
5详细算法
四、调试分析和测试结果…………………………………8
五、心得体会………………………………………………9
六、附录……………………………………………………10
一、概要
1题目:
2要求:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;
然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;
然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;
...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
二、分析
当从第二个编号开始的每张牌每次遇到是其倍数时,都会相应的翻一次,这样,每张牌会翻的次数就各不一样,可能很多次,也可能只有一两次,而结果只是要输出在经过各个不同次数的翻牌后,正面向上的牌都有哪几张。
比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,同理呢,到6.8.12…它都要来回的翻。
如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。
建立代表52张牌的线性表——调用翻牌算法按照规则翻牌——输出翻牌算法的结果
三、设计
主要有四个模块:
主函数:
main()//调用子函数
子函数:
fanpai()//实现翻牌算法
prinf()//输出正面朝上的牌
vol()//初始化,使每张牌皆正面朝上
最为主要的翻牌算法的实现:
voidfanpai(SqListL)//定义函数翻牌
{
inti,j;
//循环变量
for(i=2;
i<
=LIST_INIT_LENGTH;
i++){
for(j=i;
j<
j++)//循环判断求i的倍数
if(j%i==0)//判断第j张牌是否是i的倍数
{
if(L.elem[j-1]==1)
L.elem[j-1]=0;
//正面朝下,赋值0
else
L.elem[j-1]=1;
//正面朝上,赋值1
}
}
return;
}
3总体流程图
4重点模块或算法流程图
for(i=2;
i++)
for(j=i;
j++)
翻牌算法:
j%i==0
否
是
L.elem[j-1]==1
L.elem[j-1]=1
L.elem[j-1]=0
1、预处理
#include"
stdlib.h"
#include"
stdio.h"
conio.h"
#defineLIST_INIT_SIZE100
#defineLIST_INIT_LENGTH52
#defineLISTINCERMENT10
2、数据结构类型定义
定义一个结构体类型SqList,结构体中数组指针elem指示线性表的基地址,length指示线性表的当前长度。
Listsize指示顺序表当前分配的存储空间大小,一旦因插入元素而空间不足时,可进行再分配。
typedefstruct
int*elem;
//存储空间基址
intlength;
//当前长度
intlistsize;
//当前分配的空间存储量
}SqList;
3、主函数功能介绍
输出正面朝上牌的序号
voidprinf(SqListL)
intsum=0;
printf("
正面朝上的牌是:
"
);
for(inti=0;
LIST_INIT_LENGTH;
{
if(L.elem[i]==1)
{
printf("
%-3d"
i+1);
sum++;
}
\n正面朝上的牌有%d张!
sum);
return;
调用函数,按照规则进行翻牌
voidfanpai(SqListL)
i++)//从第i张纸牌开始翻牌,i的倍数
j++)//循环判断求i的倍数
if(j%i==0)//判断第j张牌是否是i的倍数
//正面朝下,赋值0
//正面朝上,赋值1
调用函数vol,确保翻牌前每张牌都是正面向上
voidvol(intarray[])
inti;
for(i=0;
LIST_INIT_LENGTH;
i++)//52张牌正面朝上,赋值1,否则,赋值0
array[i]=1;
4、主函数
voidmain()
SqListL;
intarray[52];
//定义数组
vol(array);
L.elem=array;
L.length=LIST_INIT_LENGTH;
L.listsize=LISTINCERMENT;
fanpai(L);
prinf(L);
getch();
四、调试分析和测试结果
最后的输出结果是:
正面朝上的牌是:
14916253649
正面朝上的牌有7张!
五、心得体会
通过这次的数据结构课程设计,我明显感觉到自己在很多方面的不足,但问题总是要解决的,必须找出问题然后将其一一解除。
所以在整个过程中,我不断加深了对数据结构的理解与一些程序写书时要注意的事项,也让我对这门课程有了进一步的了解和认识。
完成一个课程设计要注意很多方面,无论是格式、书写的内容还是要表达的思想,所以我们必须严格要求自己。
本次课程设计涉及了很多知识,由于往日学得不扎实,对某些问题仍然存在疑惑,我查阅了相关书籍,以便将疑难问题解决,同时更加进一步的掌握相关知识。
此次的课程设计不仅让我深刻体会到了学习这门课程的重要性与必要性,也让我懂得了学习是思考一个的过程,我们应该主动去思考学到的知识以及学到后怎么去运用,而不是一味地被动地接受。
数据结构及其算法在解决现实生活中的常见问题和书写软件设计方面上都有着重要的意义,我们应该好好掌握它的相关知识,在以后的学习过程中,更多的去学会如何运用知识。
附录:
程序源代码:
//空间存储基址
//输出正面朝上牌的序号
//定义函数,翻牌
i++)/*从第i张纸牌开始翻牌,i的倍数*/
j++)/*循环判断求i的倍数*/
if(j%i==0)/*判断第j张牌是否是i的倍数*/
/*正面朝下,赋值0*/
/*正面朝上,赋值1*/
//定义函数vol,确保翻牌前每张牌都是正面向上
i++)/*52张牌正面朝上,赋值1,否则,赋值0*/
//主函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计