显示杨辉三角实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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两次退出!"< { 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.实验体会