1、 完成最低要求:完成第一个功能;3 进一步要求:进一步完成后续功能。有兴趣的同学可以自己扩充系统功能。要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。二、软件环境V C +6.0三、程序源代码#includemalloc.hstdlib.h#define M 100typedef struct int data; int wei4;node; node datM; int max_meiwei4;/每维的长度 int m;shu;void menu(sh
2、u *G);void input(shu *G);void output(shu *G);void find(shu *G);void introduce(shu *G); /函数声明/*/void input(shu *G)/ 输入 按行 int i,j,k,l,h,b,n; G-m=1; for(i=0;imax_meiweii); G-m*=G-max_meiweii; /维数长度积即为数据个数 n=0;for(i=0;max_meiwei0;i+)/坐标 for(j=0;jmax_meiwei1;j+)/初 for(k=0;kmax_meiwei2;k+)/始 for(l=0;ldat
3、n.wei0=i; G-datn.wei1=j;datn.wei2=k;datn.wei3=l; n+; for(n=0;nm;n+)/依次输入各个结点的坐标值ttt请输入A); for(b=0;bdatn.weib);b的值ndatn.data); system(pause menu(G);/*/void output(shu *G)/ 输出按列优先顺序 int i,j,b,k,l,h,n;i+) /先固定第四维 ,而后由里到外依次输出j+)k+)l+) printf(tt for(h=0;hdath.wei3=i &dath.wei2=j &dath.wei1=k &dath.wei0=l
4、) printf(t%ddath.data); printf(n printf(void find(shu *G) / 给出任意元素值 输出对应的一维数组所在的位置 int i,a,k=0,j;clsnnttt 请输入所查值: scanf(a);i+) if(a=G-dati.data) /逐个比较,找出数组中和所给值相等的数 printf(ntt4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4nttt对应第一维位置为:%dn,i);tt5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5n k=1; if(k=0)nttt(_) nnttt继续 1nttt返回 2nt
5、tt请选择:j); if(j=1) find(G); else if(j=2)void menu(shu *G)/菜单int i;system(color 9aprintf(ttnnnnnnttnttntt*ntt* WELCOME *ntt* *ntt* *ntt* 输入 (press 1) *ntt* 输出 (press 2) *ntt* 查找 (press 3) *ntt* 退出 (press 0) *nttt请选择ntttscanf(i);switch(i) case 1: input(G); break; case 2: output(G); case 3: case 0: syst
6、em(nntt ntt ntt (.) ntt+-oOOo-(_)-oOOo-+ntt| |ntt| 再见! 谢谢使用! |ntt| |ntt+-oooO-Oooo-+n exit(0); break;default: menu(G); break;void introduce(shu *G) int i;nnnntt 此系统的功能有 nntt按照行优先顺序将输入的数据建成4维数组nntt按照列优先顺序输出nntt给出任意处的元素值,查询相应的一维数组的序号nnnnntt按1返回nnntt按0退出n if(i=1) else if(i=0)main() int i,j=1; shu *G; G
7、=(shu *)malloc(sizeof(shu); /开辟一段空间 while(j) /利用j来实现while循环color 9ennnttntt * * * * * * * * * * * * * * * * * * * ntt* 欢迎使用数组应用系统 * ntt * * * * * * * * * * * * * * * * * * * ntt* * ntt* * ntt* * ntt* * ntt* * ntt* * ntt* * * * * * * * * * * * * * * * * * * nttnnttt333333333 简介 1 3333333nnnttt3333333
8、33 登录 2 3333333nnnttt333333333 退出 3 3333333nttt请选择:switch(i) /case语句,控制输入情况case 1: j=0; introduce(G);break;case 2:case 3: j=0; exit(0);输入有误,请重新输入 /增强程序健壮性 j=1; return 0; 四、算法设计思想及流程图4.1 算法设计思想首先,在定义四维数组的数据类型时,我选择了整型以方便编程及利于数据的输入和输出。为了实现任务所要求的功能,我将程序划分为三类:功能函数,界面函数以及主函数。另外,其中的功能函数包括以下几种函数:四维数组元素输入函数、
9、四维数组元素输出函数、元素查找函数、功能介绍函数以及主函数。 对于四维数组输入函数,我通过四个for循环语句先对数组的坐标进行初始化,并输入各个维的长度。然后,再利用一个for循环输入各个元素值。输入时,先固定第一维,然后依次输入各个结点的元素值。对于思维数组输出函数,我也是通过多重for循环进行元素值的输出。先固定第四维,然后依次输出各个结点的元素值。对于元素查找函数,就比较简单了。就是依次对四维数组中的元素值进行比对,如果所查找的元素与数组中的元素值相同,则输出该元素所在的一维编号即可。界面函数包括欢迎界面以及选择菜单界面,包括在完成某些操作后循环出现的选择界面。出于对界面更加友好的考虑,
10、我适当的装饰了一下界面,并采用了DOS系统的清屏命令以及暂停函数,这样就使得界面更加的清晰、简洁,便于使用。在主函数里,我先输入了欢迎界面,然后进入系统选择菜单,最后在退出该系统时,还设置了欢送界面,使得该系统更加的人性化。4.2 流程图4.2.1主要功能模块流程图4.2.2数组输入函数流程图4.2.3数组输出函数流程图4.2.4查找函数流程图五、输入及相应运行结果第一组:一二三四维数分别为2,2,2,2,行优先输入16个数:1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16列优先输出相应结果: 1 9 5 13 3 11 7 15 2 10 6 14 4 12 8
11、16查找元素16:对应的一维位置为15第二组:一二三四维数分别为2,2,2,2:5,3,4,7,11,3,9,10,8,5,5,7,40,21,31,225 811 404 59 313 53 217 710 22查找元素7:对应的一维位置为3,11六、收获及体会通过数据结构的课程设计,我学到了许多,并将这些知识应用于实践中,进一步锻炼了自己的动手能力。当然,也会出现一些问题。总结如下:1、对于出现的调试错误要仔细分析错误的原因,根据错误提示,按照自顶向下的程序设计原则,逐个进行排错。只要够细心,就一定能够找到错误的所在。2、程序的易操作性很重要,也就是要有一个足够友好的界面。基于这一点,我设
12、计了自己程序的人机对话界面,通过一个个选项来完成各种操作,大大增强了程序的易用性。3、编程过程中加入必要的注释是很重要的,这不仅时为了别人能更容易的看懂你的源程序,更重要的是方便自己未来的修改。因为程序源代码一多,自己未必能够十分清楚变量及函数的作用。此时,加必要的注释,就能帮助自己变量及函数的含义,而不是从头理解,提高了工作的效率。4、要善于利用各种资源,以此提高自己编程的效率。否则,就会花费许多无谓的时间在不必要的事情上面。5、编写的程序要通俗易懂,比如变量与函数的定义要尽量做到见名知义。七、参考文献 1、谭浩强编著 C程序设计(第四版)清华大学出版社 2010.01 2、严蔚敏编著 数据结构(C语言版) 清华大学出版社 1997.04 3、网络资源八部分截图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1