1
1 1
1 2 1
1 3 3 1
………………
1
1 1
1 2 1
1 3 3 1
………………
程序中用了静态数组.
定义一个较大的数组,显示的行数由键盘输入.
当输入的行数大于16时,由于命令提示符输出宽度的原因, 就无法按照格式输出.
#include< iostream >
#include< iomanip >
using namespace std;
int main()
{
int i, j, n;
int a[ 20 ][ 20 ];
cout << "输入显示的行数: ";
cin >> n;
for( i = 0; i < n; i++) //设置杨辉三角
{
for( j = 0; j <= i; j++)
{
if( j==0 || i==j )
{
a[ i ][ j ] = 1;
}
else
{
a[ i ][ j ] = a[ i-1 ][ j-1 ] + a[ i-1 ][ j ];
}
}
}
for( i = 0; i < n; i++ ) //输出
{
for( j = 0; j <= i; j++ )
cout << setw( 5 ) << a[ i ][ j ];
cout << endl;
}
return 0;
}
程序中,用户输入行数,程序计算完毕后,打印出三角形矩阵。
代码如下:
#include <stdio.h>
void main() { int i,j; printf("please input line:"); int N; scanf("%d",&N); int** a=new int*[N+1]; for(i=1;i<=N;i++) { a[i]=new int[N+1]; }
for(i=1;i<=N;i++) //每行的第一个、最后一个元素都为1 { a[i][1]=1; a[i][i]=1; } for(i=3;i<=N;i++) //从第三行开始计算 { for(j=2;j<i;j++) //从每行的第2列开始计算 { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } printf("杨辉三角:\n"); for(i=1;i<=N;i++) { for(j=1;j<=i;j++) { if(j==1) { printf("%d",a[i][j]); } else printf("%3d",a[i][j]); //输出格式,以左对齐方式输出 } printf("\n"); } }
输出结果如下:
请输入行数:5 杨辉三角: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1