C++编程题 输出杨辉三角前7行

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

杨辉三角的规律比较简单,一眼就能看出来,每一行的数字等于上一行对应位置的两个数字之和。

void PrintTriangle(int h)
{
int s = 1;// 数值和高度
int i, j;// 循环计数
cout << "1"<< endl;// 输出第一个 1
for (i = 2; i <= h; s = 1, i++)         // 行数 i 从 2 到层高
{
cout << "1 ";// 第一个 1
for (j = 1; j <= i - 2; j++)// 列位置 j 绕过第一个直接开始循环
cout << (s = (i - j) * s / j) << ' ';
cout << "1" << endl;// 输出最后一个 1
}
}

这是一个很简单的可以打印杨辉三角的函数,输入参数 7,就可以打印前 7 行。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-30

杨辉三角的规律比较简单,一眼就能看出来,每一行的数字等于上一行对应位置的两个数字之和。
void PrintTriangle(int h)
{
int s = 1;// 数值和高度
int i, j;// 循环计数
cout << "1"<< endl;// 输出第一个 1
for (i = 2; i <= h; s = 1, i++)         // 行数 i 从 2 到层高
{
cout << "1 ";// 第一个 1
for (j = 1; j <= i - 2; j++)// 列位置 j 绕过第一个直接开始循环
cout << (s = (i - j) * s / j) << ' ';
cout << "1" << endl;// 输出最后一个 1
}
}
这是一个很简单的可以打印杨辉三角的函数,输入参数
7,就可以打印前
7
行。

第2个回答  2017-08-17

大概写一下,可能会有一两句语法不太对的,请见谅。

#include <iostream>
using namespace std;
int mem[10][10] ;
int main()
{
    mem[1][1] = 1 ;
    for(int i=2;i<=7;i++)for(int j=1;j<=i;j++)mem[i][j] = mem[i-1][j-1] + mem[i-1][j] ;
    for(int i=1;i<=7;i++)
    {
        for(int j=1;j<=i;j++)cout << mem[i][j] << ' ' ;
        cout << endl ;
    }
    return 0 ;
}

随便写的,有些空间浪费,冗杂运算也挺多,但是勉强能用吧。

第3个回答  2013-03-19
#include <stdio.h>
void main()
{
int i,j;
int a[7][7];
for (i=0;i<7;i++)
{
for (j=1;j<=i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
a[i][i]=1;
}
a[i][0]=1;
}
for (i=0;i<7;i++)
{
for (j=0;j<=i;j++)
{
printf("%d,",a[i][j]);
}
printf("\n");
}

}本回答被网友采纳
第4个回答  2013-03-19
#include <iostream>using namespace std;
void main(){
int a[7][7]={0};
int i =0;
int j =0;
int count =0;
while(i<7)
{
count = i -2;
while(j<=i)
{

if (j ==0&& i ==0)
{
a[i][j]=1;
cout<<a[i][j]<<endl;
}
else if (j ==0)
{
a[i][j]=1;
cout<<a[i][j]<<" ";
}
else if (j ==i)
{
a[i][j]=1;
cout<<a[i][j]<<endl;
}
else if (count>=0&&count<i)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
cout<<a[i][j]<<" ";
}
j ++;
}
j =0;
i ++;

}}
相似回答