编程序输出杨辉三角,用一个函数实现

如题所述

#include <stdio.h>

putyhsj(int n) //n为行数
{
int i,j;
int a[n+1][2*n+4];
for(i=1;i<=n;i++){
for(j=-1;j<2*n+2;j++){
a[i][j]=0;
}
}

a[1][n]=1;

//设置杨辉三角的数值;
for(i=1;i<=n;i++){
for(j=1;j<2*n;j++){
if(a[i][j]!=0){
a[i+1][j-1]=a[i][j-2]+a[i][j];
a[i+1][j+1]=a[i][j+2]+a[i][j];
}
}
}

//打印杨辉三角;
for(i=1;i<=n;i++){
for(j=1;j<2*n;j++){

if(a[i][j]!=0){
printf("%3d",a[i][j]); //打印格式自设,如加“\t”或空格等;
} //主要是为了打印的图像美观;
else{
printf(" ");
}
if(j==(2*n-1)){
printf("\n");
}
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-26
#include<stdio.h>
int main()
{
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");
}
}

void 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;
}
第2个回答  2013-06-26
郁闷,你搜一搜就会找出一大把的,随便找个网站。我就不粘了啊/
相似回答