综合性设计性实验报告数组应用4维数组.docx

上传人:b****8 文档编号:10043453 上传时间:2023-05-23 格式:DOCX 页数:18 大小:82.27KB
下载 相关 举报
综合性设计性实验报告数组应用4维数组.docx_第1页
第1页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第2页
第2页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第3页
第3页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第4页
第4页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第5页
第5页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第6页
第6页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第7页
第7页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第8页
第8页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第9页
第9页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第10页
第10页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第11页
第11页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第12页
第12页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第13页
第13页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第14页
第14页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第15页
第15页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第16页
第16页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第17页
第17页 / 共18页
综合性设计性实验报告数组应用4维数组.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

综合性设计性实验报告数组应用4维数组.docx

《综合性设计性实验报告数组应用4维数组.docx》由会员分享,可在线阅读,更多相关《综合性设计性实验报告数组应用4维数组.docx(18页珍藏版)》请在冰点文库上搜索。

综合性设计性实验报告数组应用4维数组.docx

综合性设计性实验报告数组应用4维数组

综合性、设计性实验报告

 

姓名学号

专业计算机科学与技术班级

实验课程名称____数据结构_

指导教师及职称___

开课学期年_学期

上课时间2016年4月

实验名称:

数组应用

实验时间:

小组合作:

是●否○

1、实验目的:

(1)掌握数组的基本应用和方法;

(2)掌握字符数组和字符串函数的使用。

(3)掌握与字符串处理有关的算法。

2、实验设备及材料:

机器配置:

4G内存,AMDA8

操作系统:

windowsxp

开发工具:

VC++6.0

3、理论依据:

窗体顶端

【1】在C语言的环境,有一个四维数组,在计算机中都是以一维的形式保存。

【2】窗体顶端

【2】例如intcof[2][2][2][2]在计算机中保存形式与一个2*2*2*2大小的一维数组相同,

窗体顶端

想要寻址一个数,因为编译器在看到数组的定义时就知道了数组每一维的大小.于是可以计算定位到相对于数组开始处的偏移.

【3】为了容易理解,都是把多维数组分解成几行,每行中又有几列的这种形式,例如intcof[4][6][4][4],就是4行,每行中有6个元素,每个元素又是一个有4个子元素一维数组,

而数组中的每个子元素仍然还是一个有4个子元素数组,

窗体底端

【4】四维数组可视为以三维数组为数据元素的向量,四维数组中的每个元素都属于四个向量。

窗体底端

窗体底端

【5】由于计算机内存是一维的,多维数组的元素应排成线性序列后存人存储器。

数组一般不做插入和删除操作,即结构中元素个数和元素间关系不变化。

一般采用顺序存储方法表示数组。

分为行优先顺序和列优先顺序。

【6】由地址计算公式可得,数组中任一元素可通过地址公式在相同时间内存取。

即顺序存储的数组是随机存取结构。

 

4、算法步骤及注意事项:

算法步骤:

(1)首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。

为了实现任务所要求的功能,我将程序划分为三类:

功能函数,界面函数以及主函数。

另外,其中的功能函数包括以下几种函数:

四维数组元素输入函数、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。

(2)对于四维数组输入函数,我通过四个for循环语句先对数组的坐标进行初始化,并输入各个维的长度。

然后,再利用一个for循环输入各个元素值。

输入时,先固定第一维,然后依次输入各个结点的元素值。

(3)对于思维数组输出函数,我也是通过多重for循环进行元素值的输出。

先固定第四维,然后依次输出各个结点的元素值。

对于元素查找函数,就比较简单了。

就是依次对四维数组中的元素值进行比对,如果所查找的元素与数组中的元素值相同,则输出该元素所在的一维编号即可。

(4)界面函数包括欢迎界面以及选择菜单界面,包括在完成某些操作后循环出现的选择界面。

出于对界面更加友好的考虑,我适当的装饰了一下界面,并采用了DOS系统的清屏命令以及暂停函数,这样就使得界面更加的清晰、简洁,便于使用。

(5)在主函数里,我先输入了欢迎界面,然后进入系统选择菜单,最后在退出该系统时,还设置了欢送界面,使得该系统更加的人性化。

流程图:

主要功能模块流程图

数组输入函数流程图

 

 

数组输出函数流程图

5.实验数据处理方法:

 

查找函数流程图

6.参考文献:

李春葆编写,《数据结构与算法》,清华大学出版社,2009年8月第2版。

指导老师对实验设计方案的意见:

 

指导老师签名:

年月日

2、实验数据及结果

输入数据:

一二三四维数分别为2,2,2,2,

行优先输入16个数:

1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16

输出数据:

列优先输出相应结果:

19

513

311

715

210

614

412

816

查找元素16:

对应的一维位置为15

 

3、对实验结果的分析与讨论:

通过数据结构的课程设计,我们学到了许多,并将这些知识应用于实践中,进一步锻炼了自己的动手能力。

当然,也会出现一些问题。

说明界面还不够友好。

输入个数不对时并没有提示,这是程序的不足之处,也需要我们更深入的去学习新的知识。

 

4、结论:

1、对于出现的调试错误要仔细分析错误的原因,根据错误提示,按照自顶向下的程序设计原则,逐个进行排错。

只要够细心,就一定能够找到错误的所在。

2、程序的易操作性很重要,也就是要有一个足够友好的界面。

基于这一点,我设计了自己程序的人机对话界面,通过一个个选项来完成各种操作,大大增强了程序的易用性。

3、要善于利用各种资源,以此提高自己编程的效率。

否则,就会花费许多无谓的时间在不必要的事情上面。

编写的程序要通俗易懂,比如变量与函数的定义要尽量做到见名知义。

 

5、实验总结

1、编程过程中加入必要的注释是很重要的,这不仅时为了别人能更容易的看懂你的源程序,更重要的是方便自己未来的修改。

因为程序源代码一多,自己未必能够十分清楚变量及函数的作用。

此时,加必要的注释,就能帮助自己变量及函数的含义,而不是从头理解,提高了工作的效率。

2、界面简单易懂,让别人更容易掌握,通过学习,学到了改变界面颜色,实现实验要求的扩充系统功能。

 

指导老师评语及得分:

 

签名:

年月日

湖南科技学院教务处编印

注意:

实验代码作为附件放在实验报告之后

 

源代码:

#include

#include

#include

#defineM100

typedefstruct

{

intdata;

intwei[4];

}node;

typedefstruct

{

nodedat[M];

intmax_meiwei[4];//每维的长度

intm;

}shu;

voidmenu(shu*G);

voidinput(shu*G);

voidoutput(shu*G);

voidfind(shu*G);

voidintroduce(shu*G);//函数声明

/***********************************************************/

voidinput(shu*G)//输入按行

{

inti,j,k,l,h,b,n;

G->m=1;

for(i=0;i<4;i++)//依次输入第一、二、三、四维的长度

{

printf("\t\t\t请输入第%d维的长度:

",i+1);

scanf("%d",&G->max_meiwei[i]);

G->m*=G->max_meiwei[i];//维数长度积即为数据个数

}

n=0;

for(i=0;imax_meiwei[0];i++)//坐标

{

for(j=0;jmax_meiwei[1];j++)//初

{

for(k=0;kmax_meiwei[2];k++)//始

{

for(l=0;lmax_meiwei[3];l++)//化

{

G->dat[n].wei[0]=i;

G->dat[n].wei[1]=j;

G->dat[n].wei[2]=k;

G->dat[n].wei[3]=l;

n++;

}

}

}

}

for(n=0;nm;n++)//依次输入各个结点的坐标值

{

printf("\t\t\t请输入A[");

for(b=0;b<4;b++)

{

printf("%d,",G->dat[n].wei[b]);

}

printf("\b]的值\n");

scanf("%d",&G->dat[n].data);

}

system("pause");

menu(G);

}

/*******************************************************/

voidoutput(shu*G)//输出按列优先顺序

{

inti,j,b,k,l,h,n;

for(i=0;imax_meiwei[3];i++)//先固定第四维,而后由里到外依次输出

{

for(j=0;jmax_meiwei[2];j++)

{

for(k=0;kmax_meiwei[1];k++)

{

for(l=0;lmax_meiwei[0];l++)

{

printf("\t\t");

for(h=0;hm;h++)

{

if(G->dat[h].wei[3]==i&&G->dat[h].wei[2]==j&&G->dat[h].wei[1]==k&&G->dat[h].wei[0]==l)

{

printf("\t%d",G->dat[h].data);

}

}

}

printf("\n");

}

}

}

printf("\n");

system("pause");

menu(G);

}

/*******************************************************/

/*******************************************************/

voidfind(shu*G)//给出任意元素值输出对应的一维数组所在的位置

{

inti,a,k=0,j;

system("cls");

printf("\n\n\t\t\t请输入所查值:

");

scanf("%d",&a);

for(i=0;im;i++)

{

if(a==G->dat[i].data)//逐个比较,找出数组中和所给值相等的数

{

printf("\n\t\t\4\4\4\4\4\4\4\4\4\4\4\4\4\4\\4\4");

printf("\n\t\t\t对应第一维位置为:

%d\n",i);

printf("\t\t\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\5\n");

k=1;

}

}

if(k==0)

{

printf("\n\t\t\t~~~~(>_<)~~~~对不起,您所查询的数不存在!

~~~~(>_<)~~~~\n");

printf("\n\t\t\t继续1\n\t\t\t返回2\n\t\t\t请选择:

");

scanf("%d",&j);

if(j==1)

{

find(G);

}

elseif(j==2)

{

menu(G);

}

}

system("pause");

menu(G);

}

/*******************************************************/

voidmenu(shu*G)//菜单

{

inti;

system("cls");

system("color9a");

printf("\t\t\n\n\n\n\n\n");

printf("\t\t\n");

printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n");

printf("\t\t║**************************************║\n");

printf("\t\t╬*WELCOME*╬\n");

printf("\t\t║**************************************║\n");

printf("\t\t╬**╬\n");

printf("\t\t║**║\n");

printf("\t\t╬*☆输入(press1)*╬\n");

printf("\t\t║*★输出(press2)*║\n");

printf("\t\t║*☆查找(press3)*║\n");

printf("\t\t╬*★退出(press0)*╬\n");

printf("\t\t║**║\n");

printf("\t\t║**************************************║\n");

printf("\t\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n");

printf("\t\t\t请选择");

printf("\n\t\t\t");

scanf("%d",&i);

switch(i)

{

case1:

input(G);

break;

case2:

output(G);

break;

case3:

find(G);

break;

case0:

{

system("cls");

printf("\n\n");

printf("\t\t    \n");

printf("\t\t     \n");

printf("\t\t   ( .@.@ )\n");

printf("\t\t+-------oOOo-----(_)-----oOOo---------+\n");

printf("\t\t|              |\n");

printf("\t\t| 再见!

谢谢使用!

!

 |\n");

printf("\t\t|               |\n");

printf("\t\t+----------oooO-------Oooo--------------+\n");

printf("\n\n");

exit(0);

break;

}

default:

menu(G);

break;

}

}

/*******************************************************/

/*******************************************************/

voidintroduce(shu*G)

{

inti;

system("cls");

printf("\n\n\n\n\t\t☆此系统的功能有☆\n\n");

printf("\t\t★按照行优先顺序将输入的数据建成4维数组\n\n");

printf("\t\t★按照列优先顺序输出\n\n");

printf("\t\t★给出任意处的元素值,查询相应的一维数组的序号\n\n");

printf("\n\n\n\t\t按1返回\n");

printf("\n\n\t\t按0退出\n");

scanf("%d",&i);

if(i==1)

{

menu(G);

}

elseif(i==0)

{

exit(0);

}

}

/*******************************************************/

main()

{

inti,j=1;

shu*G;

G=(shu*)malloc(sizeof(shu));//开辟一段空间

while(j)//利用j来实现while循环

{

system("cls");

system("color9e");

printf("\n\n\n");

printf("\t\t┏━━━━━━━━━━━━━━━━━━━┓\n");

printf("\t\t┃*******************┃\n");

printf("\t\t┃*※欢迎使用数组应用系统※*┃\n");

printf("\t\t┃********************┃\n");

printf("\t\t┃**┃\n");

printf("\t\t┃**┃\n");

printf("\t\t┃*☆☆☆☆☆☆☆☆*┃\n");

printf("\t\t┃*★★★★★*┃\n");

printf("\t\t┃*☆☆☆☆*┃\n");

printf("\t\t┃*★★★★*┃\n");

printf("\t\t┃*☆☆☆☆*┃\n");

printf("\t\t┃*★★★★*┃\n");

printf("\t\t┃*☆☆☆☆*┃\n");

printf("\t\t┃*★★★★*┃\n");

printf("\t\t┃*☆☆*┃\n");

printf("\t\t┃**┃\n");

printf("\t\t┃*************************┃\n");

printf("\t\t┗━━━━━━━━━━━━━━━━━━━┛\n");

printf("\n\t\t\t\3\3\3\3\3\3\3\3\3简介1\3\3\3\3\3\3\3");

printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3登录2\3\3\3\3\3\3\3");

printf("\n\n\n\t\t\t\3\3\3\3\3\3\3\3\3退出3\3\3\3\3\3\3\3");

printf("\n\t\t\t请选择:

");

scanf("%d",&i);

switch(i){//case语句,控制输入情况

case1:

j=0;

introduce(G);break;

case2:

j=0;

menu(G);break;

case3:

j=0;

exit(0);

default:

printf("输入有误,请重新输入");//增强程序健壮性

j=1;

}

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2