用c++编写程序,输入一个整数n,打印n行的杨辉三角(n为输入,并且小于14)

杨辉三角的形成规律是:
1,每行的第一个数是1;
2,每行的最后一个数是1;
3,从第三行开始,除了第一个和最后一个数是1,其余的数是当前元素的前一行的同列元素与前一行前一列的元素之和:例如
1
1 1
1 2 1
... ... ...

第1个回答  2008-04-08
前几天刚刚做了,呵呵
#include <iostream>
using namespace std;

//返回杨辉三角第x行第y列的值,起始行为第0行
int SanJiaoYang(int x,int y);
int main()
{
int RowCount,i,j,k;
cout << "请输入杨辉三角的行数:";
while(cin >> RowCount)
{
for(i = 0;i < RowCount;++i)
{
for(j = 1;j < RowCount - i;++j)//打印第i行第一个元素前面的空格
{
cout << " ";
}
for(k = 1;k <= i + 1;++k)//打印第i行的所有元素
{
cout << SanJiaoYang(i,k) << " ";
}
cout << endl;
}
cout << "请输入杨辉三角的行数:";
}
return 0;
}

//返回杨辉三角第x行第y列的值,起始行为第0行
int SanJiaoYang(int x,int y)
{
int z;
if((y == 1) || (y == x + 1))
{
z = 1;
}
else//y!=1且y!=x
{
z = SanJiaoYang(x - 1,y - 1) + SanJiaoYang(x - 1,y);
}

return z;
}
第2个回答  推荐于2018-04-04
#include<stdio.h>
void main()
{
int n,i,j,a[15][15];
scanf("%d",&n);
for(i=0;i<=n;i++) //Ö»ÊÇΪÁ˽«±ß½çÔªËظ³Îª0,·½±ã¼ÆËã
{
a[0][i]=0;
a[i][0]=0;
}
a[1][0]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++)
{
a[i][j]=a[i-1][j];
a[i][j]+=a[i][j-1];
printf("%d\t",a[i][j]);
}
a[i][j]=a[i][j-1];
printf("%d\t",a[i][j]);
printf("\n");
}
}本回答被提问者和网友采纳
第3个回答  2008-04-08
#include <iostream>
using namespace std;

int main(void){
int num, i, j;
int array[100][101];
for (i = 0; i < 100; i++){
for (j = 0 ; j < i+1; j++){
if (j > 0 && i > 0 && j < i){
array[i][j] = array[i-1][j-1] + array[i-1][j];
}
else{
array[i][j] = 1;
}
}
}
while (cin >> num){
for (i = 0; i < num; i++){
for (j = 0; j < i+1; j++){
cout << array[i][j];
}
cout << endl;
}
}
return 0;
}
相似回答