X 我知道了TIPS:左右滑动导航栏可以查看更多栏目
请问如何实现杨辉三角菱形的输出呢?例如键盘输入5,得到 1 1 1 1 2 1 1 3 3 11 4 6 4 1 1 3 3 1 1 2 1 1 1 1
>> 本文固定链接: http://www.vcgood.com/archives/3190
>> 转载请注明: bnyzjazz 2009年05月13日 于 C语言帝国 发表
一,打印杨辉三角
二,在对应行加相应空格数 构成上半部分(三角型)
三,打印下三角
===================
#define n 5 /*定义全局变量需要打印的行数*/
main()
{int i,j,k,a[n][n];
for(i=0;i<n;i++)
{a[i][0]=1;a[i][i]=1;}/*杨辉三角各行第一个数和最后一个数均为1*/
for(i=2;i<n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];/*第三行以后中间各数满足此规律*/
{for(k=n;k>=i;k–)printf(“ “);/for语句循环控制打印空格次数,1空格2字节*/
for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);/*打印杨辉三角*/
printf(“\n”);}
for(i=n-2;i>=0;i–) /*打印下三角
{for(k=n;k>=i;k–)printf(” ”);
for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);
printf(“\n”);} */
printf(“\n”);
}
#include<stdio.h>int port(int n,int m){ int i,p=0,mplot=1,nplot=1,nmplot=1; if(n>=m) { if(n-m==0)p=1; else { for(i=0;i<n;i++) nplot=nplot*(n-i); for(i=0;i<(n-m);i++) nmplot=nmplot*(n-m-i); for(i=0;i<m;i++) mplot=mplot*(m-i); p=nplot/(nmplot*mplot); } } else p=-1; return(p);} /*建立的一个组合公式计算函数*/void main(){ int a,i,j,z; scanf(“%d”,&a); /*输入要输出到第几行*/ for(i=0;i<=a;i++) { for(z=0;z<=(a-i);z++) printf(” “); for(j=0;j<=i;j++) printf(“%d “,port(i,j)); printf(“\n”); } /*上半部分*/ for(i=(a-1);i>=0;i–) { for(z=0;z<=(a-i);z++) printf(” “); for(j=0;j<=i;j++) printf(“%d “,port(i,j)); printf(“\n”); } /*下半部分*/}
我这个程序运行起来比较慢,还请各位多提点意见
你必须先 登录才能发表评论。
一,打印杨辉三角
二,在对应行加相应空格数 构成上半部分(三角型)
三,打印下三角
===================
#define n 5 /*定义全局变量需要打印的行数*/
main()
{int i,j,k,a[n][n];
for(i=0;i<n;i++)
{a[i][0]=1;a[i][i]=1;}/*杨辉三角各行第一个数和最后一个数均为1*/
for(i=2;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(k=n;k>=i;k–)printf(“ “);/for语句循环控制打印空格次数,1空格2字节*/
for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);/*打印杨辉三角*/
printf(“\n”);}
for(i=n-2;i>=0;i–) /*打印下三角
{for(k=n;k>=i;k–)printf(” ”);
for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);
printf(“\n”);} */
printf(“\n”);
}
#include<stdio.h>
int port(int n,int m)
{
int i,p=0,mplot=1,nplot=1,nmplot=1;
if(n>=m)
{
if(n-m==0)p=1;
else
{
for(i=0;i<n;i++)
nplot=nplot*(n-i);
for(i=0;i<(n-m);i++)
nmplot=nmplot*(n-m-i);
for(i=0;i<m;i++)
mplot=mplot*(m-i);
p=nplot/(nmplot*mplot);
}
}
else
p=-1;
return(p);
} /*建立的一个组合公式计算函数*/
void main()
{
int a,i,j,z;
scanf(“%d”,&a); /*输入要输出到第几行*/
for(i=0;i<=a;i++)
{
for(z=0;z<=(a-i);z++)
printf(” “);
for(j=0;j<=i;j++)
printf(“%d “,port(i,j));
printf(“\n”);
} /*上半部分*/
for(i=(a-1);i>=0;i–)
{
for(z=0;z<=(a-i);z++)
printf(” “);
for(j=0;j<=i;j++)
printf(“%d “,port(i,j));
printf(“\n”);
} /*下半部分*/
}
我这个程序运行起来比较慢,还请各位多提点意见