- 35
- 0
- 约2.9千字
- 约 12页
- 2016-12-06 发布于重庆
- 举报
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.进行输出三、程序框图或流程图,程序清单与调用关系四、全部源程序清单#include stdio.hstruct Node {int num ;int lay ;int sort ;struct Node *pNext ;};void main(){printf(现将构筑一个数字金字塔\n);int n ;int a ;int b ;int c ;printf(请输入一个大于5小于50用来确定金字塔大小的基数\n);scanf(%d, n) ;printf(请输入想在金字塔中确定位置的第一个数\n a=);scanf(%d, a) ;printf(请输入想在金字塔中确定位置的第二个数\n b=);scanf(%d, b) ;printf(请输入想在金字塔中确定位置的第三个数\n c=);scanf(%d, c) ;printf(\n\n);struct Node *pNode = new Node[n] ;for (int i=0; in; i++) // 初始化{pNode[i].num = i + 1 ;pNode[i].lay = 0 ;pNode[i].sort = 0 ;pNode[i].pNext = NULL ;}for (int i=0; in; i++) //确定每个数在哪一层{int j = i ;while (j){if (pNode[i].num % j == 0){pNode[i].lay = pNode[j-1].lay + 1 ;break ;}j-- ;}}//确定有多少层int lay = 0 ;for (int i=0; in; i++){if (pNode[i].lay lay)lay = pNode[i].lay ;}//把所有的元素做成链表struct Node **play = new struct Node*[lay] ;for (int j=0; j=lay; j++){struct Node *pTemp = NULL ;int k = 0 ;for (int i=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 ;}}}//输出信息struct Node *ptemp = NULL ; printf(构筑的数字金字塔为\n);for (int i=0; i=lay; i++){ptemp = play[i] ;while (ptemp != NULL){printf(%2d, ptemp-num) ;ptemp = ptemp-pNext ;}printf(\n) ;}//将层与层相接struct Node *pHead = play[0] ;for (int i=0; ilay; i++){while (play[i]-pNext != NULL){play[i] = play[i]-pNext ;}play[i]-pNext = play[i+1] ;}//给元素排名int num = 0 ;ptemp = pHead ;while (ptemp != NULL){ptemp-sort = num++ ;ptemp = ptemp-pNext ;}//输出排名printf(数字的位置为(按abc的大小从小到大排列)\n);ptemp = pHead ;while (ptemp != NULL){if (ptem
原创力文档

文档评论(0)