普通直角版本:
#define N 11
#include
void main()
{
int i,j,a[N][N];
for(i=1;i{
a[i][1]=1;
a[i-1][i-1]=1;
}
a[10][10]=1;
for(i=3;ifor(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i{
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
普通等腰版本:
#include "iostream.h"
#include "stdlib.h"
int main()
{
while(1)
{
cout<<"输入显示杨辉三角的行数:\n"; //不要输入太大,int有限制.
int i_line;
cin>>i_line;
cout<<"三角形如下\n";
int **p; //建立二维数组
p=new int*[i_line]; //指针分配空间
int i; //循环变量
for (i=0;i{
p[i]=new int[i+1]; //每一行分配空间
}
for (i=0;i{
p[i][0]=1;
p[i][i]=1; //杨辉三角,每一行第一个、最后一个数是1
if (i>=2) //第三行开始
{
for (int j=1;j p[i][j]=p[i-1][j-1]+p[i-1][j];
}
}
for (i=0;i{
for (int m=0;mcout<<" "; //输出空格
for (int k=0;k<=i;k++) //显示每一行
cout<cout<<"\n";
}
cout<<"\n";
}
cout<return 0;
}
递归版:
#include
#include
int f(int n)
{
if(n==1||n==0)
return 1;
else
return f(n-1)*n;
}
int main()
{
int i, j,k,n;
printf("请输入行数(最好<=13):");
scanf("%d",&n);
for (i = 0; i{
for(k=(n-i)*2;k>0;k--)
printf(" ");
for (j=0;j<=i;j++)
printf("%4d",(f(i)/f(j)/f(i-j)));
printf("\n");
}
return 0;
}
LZ你的要求是:利用n!/m!/(n-m)!计算,所以你要的程序是这样的:
#include
#include
int f(int n)
{
if(n==1||n==0)
return 1;
else
return f(n-1)*n;
}
int main()
{
int i, j,k,n;
printf("请输入行数(最好<=13):");
scanf("%d",&n);
for (i = 0; i{
for(k=(n-i)*2;k>0;k--)
printf(" ");
for (j=0;j<=i;j++)
printf("%4d",(f(i)/f(j)/f(i-j)));
printf("\n");
}
return 0;
}
源代码
#include"stdio.h"
void main()
{
int i,j,n,a[20][20];
printf("请输入要排列的行数:\n");
scanf("%d",&n);
for(i=0;i
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i
printf("排列好的数字为:\n");
for(i=0;i
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
望楼主看在俺是沙发的份上给个采纳。。。