用C语言打印n行杨辉三角,最好简单点
2个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
int s[10000][10000];
int main()
{
int n,i,j;
scanf("%d",&n);
s[1][1]=1;
s[2][1]=1;
s[2][2]=1;
if(n==1)
printf("%d\n",s[1][1]);
else if(n==2)
{
printf("%d\n",s[1][1]);
printf("%d %d\n",s[2][1],s[2][2]);
}
else
{
for(i=3;i<=n;i++)
{
for(j=1;j<=i;j++)
{
s[i][j]=s[i-1][j]+s[i-1][j-1];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d ",s[i][j]);
}
printf("\n");
}
}
system("pause");
return 0;
}
我的意思是把n=1和n=2特殊处理,其他的就可以算出来了,先用一个二维数组存着,再一起输出,这样你看行吗
#include<stdlib.h>
int s[10000][10000];
int main()
{
int n,i,j;
scanf("%d",&n);
s[1][1]=1;
s[2][1]=1;
s[2][2]=1;
if(n==1)
printf("%d\n",s[1][1]);
else if(n==2)
{
printf("%d\n",s[1][1]);
printf("%d %d\n",s[2][1],s[2][2]);
}
else
{
for(i=3;i<=n;i++)
{
for(j=1;j<=i;j++)
{
s[i][j]=s[i-1][j]+s[i-1][j-1];
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d ",s[i][j]);
}
printf("\n");
}
}
system("pause");
return 0;
}
我的意思是把n=1和n=2特殊处理,其他的就可以算出来了,先用一个二维数组存着,再一起输出,这样你看行吗
更多追问追答
追问
大体懂了,回头调试一下,感谢大神!
追答
放心,我是通过了才放出来的,谢谢采纳!
展开全部
#include<stdio.h>
//我的版本
int c(int m,int n);
main()
{
int i,j,n;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(j=0;j<=i;j++)
printf("%5d",c(i,j));
printf("\n");
}
}
int c(int m,int n)
{
int i,j,p=1,s=1;
for(i=m,j=0;j<n;j++,i--)
p*=i;
for(i=n,j=0;j<n;j++,i--)
s*=i;
return p/s;
}
根据笛卡尔组合数的杨辉三角
#define M 20
#define N 20
#include<stdio.h>
main()
{
int i,j,n;
int a[M][N];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
{
if(i==j||i==0||j==0)
{
a[i][j]=1;
}
else
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
二维数组版
追问
只看懂了第二种,好像j和i一直相等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询