c语言实现杨慧三角中后半段代码的注释

#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