#include<stdio.h>
int c(int x,int y);
int main()
{
int i,j,n=0;
printf("Please input the value of n(n>=0):");
scanf("%d",&n);
for(i=0; i<=n; ++i)
{
for(j=0; j<2*n-2*i; ++j)
{
printf(" ");
}
for(j=0; j<i+1; ++j)
{
printf("%5d",c(i,j));
}
printf("\n");
}
}
int c(int x,int y)
{
int z;
if ((y==0)||(y==x))
{
return 1;
}
else z = c(x-1,y-1) + c(x-1,y);
return z;
}
#include<stdio.h>
int c(int x,int y);
int main()
{
int i,j,n=0;
printf("Please input the value of n(n>=0):");
scanf("%d",&n);//读入n代表几行
for(i=0; i<=n; ++i){//从0开始遍历
for(j=0; j<2*n-2*i; ++j){//输出每行应该有多少空格 每行有2*(n-i)个
printf(" ");
}
for(j=0; j<i+1; ++j){//输出数字
printf("%5d",c(i,j));
}
printf("\n");
}
}
int c(int x,int y)
{
int z;
if ((y==0)||(y==x)){//初始和末位都是1
return 1;
}
else z = c(x-1,y-1) + c(x-1,y);//其他情况等于上面两个数字之和
return z;
}
这个跟打印等腰三角形的星号逻辑是一样的。只是你输出的内容不一样,通过定义int c(int x,int y) 来输出当前位置的值。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632