You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C语言实现的直角帕斯卡三角修改为锐角型

如何用C语言生成锐角型帕斯卡三角?

我是编程新手,刚学会C语言基础知识,尝试用C语言实现帕斯卡三角,但无法生成锐角型三角。以下是我编写的代码:

#include<stdio.h>
int main(void)
{
    int n,s=1;
    do
    {
        printf("give the value of n: \n");
        scanf("%d",&n);
    }
    while(n<0);
    for (int i=0; i<=n;i++)
    {
        printf("1  ");
        for (int j=1;j<=i;j++)
        {
            s=s*(i-j+1)/(j);
                printf("%d  ",s);
        }
        printf("\n");
    }   
}

该代码生成的是直角型帕斯卡三角,如下:

1
                                        1 1
                                        1 2 1
                                        1 3 3 1 
                                        1 4 6 4 1

我希望生成锐角型帕斯卡三角,如下所示:

1
                                                    1 1
                                                   1 2 1 
                                                  1 3 3 1 

解决方案

要生成居中对齐的锐角型帕斯卡三角,核心是在每一行输出数字前打印足够空格实现居中,同时修复代码中变量未重置的问题。修改后的代码如下:

#include<stdio.h>
int main(void)
{
    int n;
    do
    {
        printf("give the value of n: \n");
        scanf("%d",&n);
    }
    while(n<0);
    
    // 外层循环控制行数
    for (int i=0; i<=n;i++)
    {
        int s = 1; // 每一行开始时重置s为1,避免上一行计算结果干扰
        // 打印前置空格,实现居中效果
        for (int k = 0; k < n - i; k++)
        {
            printf("   "); // 用3个空格保证数字对齐,可根据数字长度调整
        }
        printf("%d  ", s);
        // 计算并打印当前行后续数字
        for (int j=1;j<=i;j++)
        {
            s = s*(i-j+1)/(j);
            printf("%d  ", s);
        }
        printf("\n");
    }   
}

关键修改说明

  • 重置变量s:将s的声明移到外层循环内部,每一行开始时重置为1,解决上一行计算残留值导致的数字错误问题。
  • 添加前置空格:新增内层循环打印n-i组空格,让每一行数字整体居中,形成锐角型布局。如果后续出现两位数、三位数的数字,可以增加每组空格的数量(比如改为4个),保证三角对齐美观。

运行修改后的代码,输入n=3时,输出效果如下:

1  
        1  1  
     1  2  1  
  1  3  3  1  

内容的提问来源于stack exchange,提问作者Loves Mathematics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:12:21