C语言程序设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计报告学院、系:专业名称:课程设计科目所在班级:学生学号:学生姓名:指导教师:完成时间:数字金字塔一、设计任务与目标给出一个正整数n,一个存放1到n共n个正整数的数字金字塔构造如下:Ⅰ1在最上方第0层;Ⅱ如果x大于y并且x除以y的余数为0(即xy&&x%y==0),x要放在y下方一层(即若y在第i层,x应在i+1层);Ⅲ每个数应尽可能放在更下方,即如果可以放在第i层,就不能放在i-1层;Ⅳ相同层上的数从左向右从小到大排列。其实第i层是有i个素数因子的数的从小到大的排列。要求编写程序,输入一个正整数n,5n50,再输入3个不大于n的正整数,然后程序输出所构造的数字金字塔,及所输入3个不大于n的正整数在数字金字塔中的编号。程序编写完成后,要求给出程序对下列两组输入的结果:(1)10,7,8,9(2)25,15,20,25二、方案设计与论证1.判断在金字塔中的每个数在哪一层2.确定数字金字塔的层数3.将确定好的数字分层储存在链表中4.将每一层进行连接5.为数字进行排名6.进行输出三、程序框图或流程图,程序清单与调用关系四、全部源程序清单#includestdio.hstructNode{intnum;intlay;intsort;structNode*pNext;};voidmain(){printf(现将构筑一个数字金字塔\n);intn;inta;intb;intc;printf(请输入一个大于5小于50用来确定金字塔大小的基数\n);scanf(%d,&n);printf(请输入想在金字塔中确定位置的第一个数\na=);scanf(%d,&a);printf(请输入想在金字塔中确定位置的第二个数\nb=);scanf(%d,&b);printf(请输入想在金字塔中确定位置的第三个数\nc=);scanf(%d,&c);printf(\n\n);structNode*pNode=newNode[n];for(inti=0;in;i++)//初始化{pNode[i].num=i+1;pNode[i].lay=0;pNode[i].sort=0;pNode[i].pNext=NULL;}for(inti=0;in;i++)//确定每个数在哪一层{intj=i;while(j){if(pNode[i].num%j==0){pNode[i].lay=pNode[j-1].lay+1;break;}j--;}}//确定有多少层intlay=0;for(inti=0;in;i++){if(pNode[i].laylay)lay=pNode[i].lay;}//把所有的元素做成链表structNode**play=newstructNode*[lay];for(intj=0;j=lay;j++){structNode*pTemp=NULL;intk=0;for(inti=0;in;i++){if(k==0){if(pNode[i].lay==j){play[j]=&pNode[i];pTemp=play[j];k=1;}}elseif(pNode[i].lay==j){pTemp-pNext=&pNode[i];pTemp=pTemp-pNext;}}}//输出信息structNode*ptemp=NULL;printf(构筑的数字金字塔为\n);for(inti=0;i=lay;i++){ptemp=play[i];while(ptemp!=NULL){printf(%2d,ptemp-num);ptemp=ptemp-pNext;}printf(\n);}//将层与层相接structNode*pHead=play[0];for(inti=0;ilay;i++){while(play[i]-pNext!=NULL){play[i]=play[i]-pNext;}play[i]-pNext=play[i+1];}//给元素排名intnum=0;ptemp=pHead;while(ptemp!=NULL){ptemp-sort=num++;ptemp=ptemp-pNext;}//输出排名printf(数字的位置为(按abc的大小从小到大排列)\n);ptemp=pHead;while(ptemp!=NULL){if(ptemp-num==a)printf(%d,,ptemp-sort+1);if(ptemp-num==b)printf(%d,,ptemp-sort+1);if(ptemp-num==c)printf(%d,,ptemp-sort+1);ptemp=ptemp-pNext;}printf(\n);delete[]pNode;}五、程序运行结果测试与分析(1)输入10,7,8,9程序输出的结果为构筑的数字金字塔为12357469108数字的位置为(按a,b,c的大小从小到大排列)5,8,10(2)输入25,15,20,25程序输出的结果为12357111317192346910141521222581218201624数字的位置为(按a,b,c的大小从小到大排列)16,19,23六、结论与心得程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。可得最后结论。在程序设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程序设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要。七、参考资料无八、致谢课程设计成绩评定表对课程设计工作过程的简短介绍和自我评价学生签名:2012年月日(以下由评定小组教师填写)质量评价指标(在相应栏目打√)评价项目评价质量优秀良好中等及格不及格工作量和态度实验、计算可靠性文字和图表质量总体评价评定成绩(百分制)评定小组成员签名2012年月日制定人:王钲旋,单缅审定人:陈守孔

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功