c语言 等腰 杨辉三角
#include<stdio.h>intmain(void){inti,j,m;ints[20][20];for(i=0;i<10;i++){s[i][0]=1;s[i]...
#include<stdio.h>
int main(void)
{
int i,j,m;
int s[20][20];
for(i=0;i<10;i++)
{
s[i][0]=1;
s[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
s[i][j]=s[i-1][j]+s[i-1][j-1]; for(i=0;i<10;i++)
{
for(m=0;m<3*(10-i);m++)
printf(" ");
for(j=0;j<=i;j++)
if(j==0)
printf("%d",s[i][j]);
else
printf("%6d",s[i][j]);
printf("\n");
}
return 0;
}
求详细解释 展开
int main(void)
{
int i,j,m;
int s[20][20];
for(i=0;i<10;i++)
{
s[i][0]=1;
s[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
s[i][j]=s[i-1][j]+s[i-1][j-1]; for(i=0;i<10;i++)
{
for(m=0;m<3*(10-i);m++)
printf(" ");
for(j=0;j<=i;j++)
if(j==0)
printf("%d",s[i][j]);
else
printf("%6d",s[i][j]);
printf("\n");
}
return 0;
}
求详细解释 展开
6个回答
展开全部
for(m=0;m<3*(10-i);m++) printf(" ");//<<<这个循环是让它成为等腰的关键所在
//这个3是printf("%6d",s[i][j]);中的6 除以2得来 下一行比相邻的上一行多一个长度为6的元素
//而杨辉三角本身的求值是固定的叠代求解 没什么好说的
//这个3是printf("%6d",s[i][j]);中的6 除以2得来 下一行比相邻的上一行多一个长度为6的元素
//而杨辉三角本身的求值是固定的叠代求解 没什么好说的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#define N 14
main()
{
int i, j, k, n=0, a[N][N]; /*定义二维数组a[14][14]*/
while(n<=0||n>=13)
{ /*控制打印的行数不要太大,过大会造成显示不规范*/
printf("请输入要打印的行数:");
scanf("%d",&n);
}
printf("%d行杨辉三角如下:\n",n);
for(i=1;i<=n;i++)
a[i][1] = a[i][i] = 1; /*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/
for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; /*除两边的数外都等于上两顶数之和*/
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i;k++)
printf(" "); /*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/
for(j=1;j<=i;j++) /*j<=i的原因是不输出其它的数,只输出我们想要的数*/
printf("%6d",a[i][j]);
printf("\n"); /*当一行输出完以后换行继续下一行的输出*/
}
printf("\n");
}
#define N 14
main()
{
int i, j, k, n=0, a[N][N]; /*定义二维数组a[14][14]*/
while(n<=0||n>=13)
{ /*控制打印的行数不要太大,过大会造成显示不规范*/
printf("请输入要打印的行数:");
scanf("%d",&n);
}
printf("%d行杨辉三角如下:\n",n);
for(i=1;i<=n;i++)
a[i][1] = a[i][i] = 1; /*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/
for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; /*除两边的数外都等于上两顶数之和*/
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i;k++)
printf(" "); /*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/
for(j=1;j<=i;j++) /*j<=i的原因是不输出其它的数,只输出我们想要的数*/
printf("%6d",a[i][j]);
printf("\n"); /*当一行输出完以后换行继续下一行的输出*/
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
杨辉三角有公式的,f[i][j]=f[i-1][j]+f[i-1][j-1]
这个你要看一下组合数学书了
这个你要看一下组合数学书了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运行了一下,把k去了是三角啊 #include<stdio.h> #define N 10 int main() {int a[N][N],i,j; for(i=1;i<N;i++) { a[i][1]=1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看不懂啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询