C语言程序不错的请进 对的加分

怎么写杨辉三角形的程序??

只要知道杨辉三角的各个元素的定义和适当的使用循环语句就不难写了
从第三行开始,除了第一列和对角线的元素为1外,其他元素的值是其上面两个数相加的和。
例如,数组
1
1 1
1 2 1
1 3 3 1
...........
中,第3行中的2就是上一行的两个数之和(1+1)
第四行的两个3也是上一行的两个数之和(1+2,2+1)
根据这个规律不难写出程序
参考程序如下
#include <stdio.h>
void main()
{
int a[10][10];//这里以数组为10行10列为例
int i,j;
for(i=0;i<10;i++)//先初始化数组,将数组的第一列和对角线初始化为1,其他的初始化为0
for(j=0;j<10;j++)
if(j==0)
a[i][j]=1;
else if(i==j)
a[i][j]=1;
else
a[i][j]=0;

for(i=2;i<10;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];//其他的元素的赋值方法,杨辉三角的规律

for(i=0;i<10;i++)//打印数组
for(j=0;j<10;j++)
{
printf("%3d ",a[i][j]);
if(j==9)
printf("\n");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-31
杨辉三角的结构如下:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
......
#include<stdio.h>
int main()
{
int c(int x,int y);/*要声明函数*/
int i,j,n=13;
printf("N=");
while(n>12)
scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/
for(i=0;i<=n;i++) /*控制输出N行*/
{
for(j=0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/
for(j=1;j<i+2;j++) printf("%4d",c(i,j)); /*输出第i行的第j个值*/
printf("\n");
}
}

int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/
{
int z;
if((y==1)||(y==x+1)) return 1; /*若为x行的第1或第x+1列,则输出1*/
z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/
return z;
}

c++
算法如下:
#include<iostream.h>
#define MAX 100
void main()
{
int a[MAX][MAX],i,j,n;
cout<<"Enter n=";
cin>>n;
for(i=0;i<n;i++)
{
a[i][0]=1;//将边界上的点
a[i][i]=1;//赋值为1
}
for(i=1;i<n;i++)
for(j=1;j<i;j++)
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<<a[i][j]<<' ';
cout<<endl;
}
}
#include <iostream.h>
#include <iomanip.h>

typedef long (*FunPtr)( long, long );

long Factorial( long value );
long GetElementMethod1( long row, long col );
long GetElementMethod2( long row, long col );
void Output( long step, FunPtr funptr );

// 程序入口点
int main()
{
FunPtr funptr;

// 使用数学公式方法输出杨辉三角
funptr = GetElementMethod1;
Output( 6, funptr );

cout << endl;

// 使用递归输出杨辉三角
funptr = GetElementMethod2;
Output( 6, funptr );

return 0;
}

// 获取当前参数的阶乘值
long Factorial( long value )
{
if ( value == 0 || value == 1 )
return 1;
else
return value * Factorial( value - 1 );
}

// 获取杨辉三角第row行第col列元素的值
long GetElementMethod1( long row, long col )
{
return Factorial( row ) / ( Factorial( row - col ) * Factorial( col ) );
}

// 获取杨辉三角第row行第col列元素的值
long GetElementMethod2( long row, long col )
{
if ( col == 0 || row == col )
return 1;
else
return GetElementMethod2( row - 1, col - 1 ) + GetElementMethod2( row - 1, col );
}

// 输出杨辉三角,step为杨辉三角的阶数。
void Output( long step, FunPtr funptr )
{
for ( int row = 0; row <= step; ++row )
{
for ( int col = 0; col <= row; col++ )
{
cout << setw( 5 ) << funptr( row, col );
}

cout << endl;
}
}
第2个回答  2008-10-31
百度搜索“C语言 杨辉三角”,一大堆

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网