显示杨辉三角实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

显示杨辉三角实验报告

姓名:许严班级:计122 学号:1213023050

1.问题描述

杨辉三角如图2.4.3所示,其特点是两个腰上数值是1,其他位置上的每一个整数都是它的上一行相邻两个整数之和。问题是:对于指定的最大行数rmax,要求从第一行到第rmax逐行显示杨辉三角形的所有元素。

2.基本要求

⑴设计输出形式,尽量反映杨辉三角的特点。

⑵设计计算杨辉三角形各行数值的方法。

⑶输入:rmax从键盘输入。

⑷输出:屏幕输出杨辉三角形.

3.实现提示

⑴存储设计

计算杨辉三角形第i行时,如果在第i-1行两侧各添加一个0,则第i行的第j个元素等于第i-1行的第j-1个元素与第j个元素的和。计算如图2.4.4所示。第i行计算完,第i-1行的数据就没有用了,依据第i行数据可计算第i+1行的数据。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

图2.4.3 杨辉三角形

从上述计算中不难看出,第i行的元素从左往右依次可被求得,求解过程中也是从左往右依次使用地i-1行的数据,显然,具有先入先出的特点。所以,可借助一个队列存放计算过程中所需的数据,如图2.4.5所示。

但随着航数的增加,队列会很长。所以,可以设置一循环队列,队长不少于rmax+2,边计算边出队。

(2)算法设计

计算各行元素的算法步骤如下。

Step1:队列初始化,0、1入队。队头ftont指向0处,队尾指向1后。

Step2:i从1到rmax,循环执行下列操作,求第i行数据。

2.1 0入队。

2.2 从队首起直到队尾,每出队两元素,求和后入队。

输出时注意0不输出。

(3)程序设计

#include

using namespace std;

#include

int Fd(int x, int y)

{

int t = 1;

int k = 1;

for(int i = y; i > x ; i--)

{

t = t * i;

t = t / k;

k++;

}

return t;

}

int main()

{

int nsize;

cout<<"请输入大小"<

cout<<"提示:按Ctrl+Z两次退出!"<>nsize)

{

for(int i = 0; i <= nsize; i++)

{

for(int k = 0 ; k <= nsize; k++)

{

if(k > i)

{

cout<<" ";

}

}

for(int j = 0 ; j <= i; j++)

{

cout<

}

cout<

}

cout<<"请输入大小"<

}

return 0;

}

4.测试与运行

给出行数,从运行结果验证程序设计是否正确。运行截图:

5.实验体会

相关文档
最新文档