杨辉三角形实验报告Word格式.docx

上传人:b****1 文档编号:1389210 上传时间:2023-04-30 格式:DOCX 页数:9 大小:61.68KB
下载 相关 举报
杨辉三角形实验报告Word格式.docx_第1页
第1页 / 共9页
杨辉三角形实验报告Word格式.docx_第2页
第2页 / 共9页
杨辉三角形实验报告Word格式.docx_第3页
第3页 / 共9页
杨辉三角形实验报告Word格式.docx_第4页
第4页 / 共9页
杨辉三角形实验报告Word格式.docx_第5页
第5页 / 共9页
杨辉三角形实验报告Word格式.docx_第6页
第6页 / 共9页
杨辉三角形实验报告Word格式.docx_第7页
第7页 / 共9页
杨辉三角形实验报告Word格式.docx_第8页
第8页 / 共9页
杨辉三角形实验报告Word格式.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

杨辉三角形实验报告Word格式.docx

《杨辉三角形实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《杨辉三角形实验报告Word格式.docx(9页珍藏版)》请在冰点文库上搜索。

杨辉三角形实验报告Word格式.docx

相应的输入数据和运算结果显示在其后。

4、程序执行的命令包括:

1)构造顺序队列;

2)分析第i行元素与第i+1行元素的关系

目的是从前一行的数据可以计算下一行的数据

从第i行数据计算并存放第i+1行数据

5、测试数据

输入行数n=3;

输出结果为:

11

121

1331

二.概要设计

链队列的抽象数据类型定义为:

ADTQueue{

数据对象:

D={ai|ai∈Elemset,i=1,2,3,·

·

n,n>=0}

数据关系:

R={<ai-1,ai>|ai-1,ai∈D,i=1,2,·

n}(约定其中ai端为队列头,an端为队列尾)

基本操作:

InitQueue(&

Q)

操作结果:

构造一个空队列

DestroyQueue(&

初始条件:

队列已存在

操作结果:

队列被销毁

ClearQueue(&

将Q清空

QueueEmpty(Q)

若队为空,则返回为TRUE,否则返回为FALSE。

Queuelength(Q)

返回Q的元素个数

Gethead(Q,&

e)

队列非空

用e返回Q的队首元素

Enqueue(&

Q,&

插入的元素e为Q的新队首元素

Dequeue(&

Q为非空

删除Q的队首元素,并用e返回其值

QueueTraverse(Q,visit())

Q存在且非空

从队头到队尾,依次对Q的每个元素用函数visit(),一旦visit()失败则操作失败

}ADTQueue

2、程序包含两个模块:

1)主程序模块:

voidmain()

{

初始化;

Do

{

接受命令;

处理命令;

}while(“命令”!

=“退出“);

}

2)顺序队列单元模块

各模块之间的调用关系如下:

主程序模块

顺序队列模块

三、详细设计

1、元素类型、结点类型和指针类型。

typedefstructsqQueue

int*base;

intfront;

intrear;

}SqQueue;

2、基于程序的模块化思想,通过以下初始化队列、入队、取得队头元素等三个基本操作来实现程序,具体如下:

intInitQueue(SqQueue&

Q)

{

Q.base=(int*)malloc(100*sizeof(int));

//分配队列的存储空间;

if(!

Q.base)exit(0);

Q.front=Q.rear=0;

return0;

intEnQueue(SqQueue&

Q,inte)

if(((Q.rear+1)%100)==Q.front)

return(0);

Q.base[Q.rear]=e;

Q.rear=((Q.rear+1)%100);

return1;

}//EnQueue;

intDeQueue(SqQueue&

Q,int&

e)

if(Q.rear==Q.front)

e=Q.base[Q.front];

Q.front=(Q.front+1)%100;

}//DeQueue;

3、主函数

voidYangHui(intn)//n为需要输出的杨辉三角形的行数

SqQueueq;

ints=0,t,i,j,k;

InitQueue(q);

EnQueue(q,1);

for(i=1;

i<

=n;

i++)//逐行计算

EnQueue(q,0);

for(k=2*i;

k<

=n*(n+1)/2;

k++)

printf("

"

);

for(j=1;

j<

=i+2;

j++)//根据上行系数求下行系数

{DeQueue(q,t);

EnQueue(q,s+t);

s=t;

if(j!

=i+2)

%4d"

s);

//不输出每行结尾的0

}

printf("

\n"

}

}

intn;

printf("

pleaseinputanumber:

scanf("

%d"

&

n);

YangHui(n);

四、调试分析

1、由于对队列的算法不熟,在早期调试的过程中出现了很多问题。

2、打印输出的数据是对的,但由于空格的输出没控制好,到后面由于有些数字位数较多,导致输出效果很不美观,而后通过根据数字位数多少来更改输出空格的语句,从而解决了这一问题;

3、本程序的模块设置比较合理

4、算法的时空分析

1)本算法的时间复杂度为:

O(i*(n-2))

2)本算法的空间复杂度为:

O(n*(n+5)/2)

5、本次实习作业采用数据抽象的程序设计方法,设计时思路清晰,实现调试时较为顺利,尤其是对杨辉三角的队列实现算法具有较好的可重复利用性,确实得到了一次良好的程序设计训练

五、用户手册

1、本程序的运行环境为Win7操作系统,MicrosoftVisualc++6.0,执行文件为:

YangHuiTriangle.exe;

2、进入演示程序后的用户界面为:

3、得到“pleaseinputanumber:

”的命令后,即提示键入杨辉三角形的行数,结束符为“回车符”;

4、输入数字即为杨辉三角形的行数,之后即输出要打印的杨辉三角形;

5、接受其他命令后即执行相应运算和显示相应的结果。

六、测试结果

1、执行命令n=1:

键入Enter键后结果为

2、执行命令n=2:

键入Enter键后结果为

3、执行命令n=6:

七、附录

源程序文件名清单:

YangHuiTriangle.c//主程序

SqQueue//顺序队列类型

 

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

当前位置:首页 > 人文社科 > 法律资料

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

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