输出三角形的题型讲解(一文解决)

简介: 本文详解C语言输出三角形的核心思路:将问题拆解为空格数与星号数两个子问题。通过画图找规律,推导出空格数为`num-i-1`、星号数为`2*i+1`,助你彻底掌握此类题型的通用解法。

前言

之前有读者说,每次看到输出三角形都拿捏不准

本篇文章,一定会让大家豁然开朗,看到输出三角形再也不用慌了
ps:本文使用的是C语言,不论什么语言实现方式都是一样的
🏠我的主页:我的主页

一. 题目类型📝

本章节可以解决一下类似的问题


二. 思路🤔

这里相当于解决这两空
因为其他的,一般都会写

int main()
{
    int i, j, num;
    printf("请输入层数\n");
    scanf("%d", &num);
    //控制输出多少层
    for(i = 0; i < num; i++)
    {
        //输出空格
        for(j = 0; j < 1️⃣; j++)
        {
            printf(" ");
        }
        //输出星号
        for(j = 0; j < 2️⃣; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    getch();
}

碰到这一类题,可以将这个大问题,分解成两个个小问题:

  1. 空格的个数怎么输出
  2. 星号的个数怎么输出

现在就从这步详细来分析
为了更好的显示,先将空格换成横杠

1. 空格的输出⏹️

代码中一般控制输出空格的是从0开始的,那么可以这样分析

当 j 为0时,输出4个空格
当 j 为1时,输出3个空格
·····
因为这里演示的5层的,所以num为5
那就要将这些可以用的看看能不能被自己利用
可以找到规律:(总数)sum - j - i

因为每过一轮,控制总体的 i 就会加1,而空格也会减少1,所以可以直接减 i
这个相对来说,还是容易理解的,一定要在草稿纸上画一下这个图,然后找规律

2. 星号的输出

当 j 为0时,输出1个星号
当 j 为1时,输出3个星号
····
这里就要用到一个点斜式公式

第一行可以定位 x 轴的两个值,左边的 0 是x1,右边的 1 是x2
第二行可以定为 y 轴的两个值,左边的 1 是y1,右边的 3 是y2

再用求斜率 k 的公式,求得斜率k
再取x1 和 y1 或者 x2 和 y2 带入公式
就可以求得对于的y的式子了
再将 x 变成 i 即可
即: 2 * i - 1


三. 成品

int main()
{
    int i, j, num;
    printf("请输入层数\n");
    scanf("%d", &num);
    for(i = 0; i < num; i++)
    {
        for(j = 0; j < num - i - 1; j++)
        {
            printf(" ");
        }
        for(j = 0; j < 2 * i + 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    getch();
}

这道题的解法可以记一记,这样再碰到类似的题,就可以自己推出来了

遇到没有什么头绪的题,一定要画图,找到其规律
画图,离成功又进一步 😊

目录
相关文章
人工智能 文字识别 前端开发
32 0
人工智能 安全 测试技术
34 0
文字识别 自然语言处理 数据挖掘
20 0
算法 安全 开发工具
25 1
存储 算法 开发工具
31 4
Linux 开发工具 git
25 0
存储 算法 区块链
25 0
存储 C语言
24 0
人工智能 IDE 开发工具
129 1
THW
|
8月前
|
存储 安全
BadUSB 攻击原理
BadUSB攻击通过将USB设备伪装成键盘等HID设备,利用系统对HID的信任,在连接电脑后自动模拟键盘输入执行恶意指令,从而绕过传统安全防护,实现无需用户操作的秒级入侵。
THW
960 0

热门文章

最新文章