排版类问题(机试高频)

特点:看似简单,实则考循环规律 + 二维数组,必须多练。常见题型:

  • 字符棱形、三角形、长方形
  • 旋转数字 / 矩阵旋转 / 矩阵翻转
  • 杨辉三角
  • 2048 问题

一、字符棱形

题目描述

输入整数 n(对角半长),用 * 输出棱形。

输入:3

输出:

复制代码
  *
 ***
*****
 ***
  *

解题思路

分成上三角 + 下三角:

  1. 上三角:i 从 1 到 n
  2. 下三角:i 从 n-1 到 1每层:先打空格 ,再打 *

完整代码

cpp 复制代码
#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);

    // 上三角
    for (int i = 1; i <= n; i++) {
        // 打印空格
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        // 打印 *
        for (int j = n - i + 1; j < n + i; j++) {
            printf("*");
        }
        printf("\n");
    }

    // 下三角
    for (int i = n - 1; i >= 1; i--) {
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        for (int j = n - i + 1; j < n + i; j++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

二、杨辉三角形(DreamJudge 1062)

题目描述

输入行数 n(n≤20),输出前 n 行杨辉三角,输入 0 结束。规律:

  • 两边都是 1
  • 中间数 = 左上角 + 正上方a[i][j] = a[i-1][j] + a[i-1][j-1]

输入:5

输出:

复制代码
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

完整代码

cpp 复制代码
#include <stdio.h>

int main() {
    int a[21][21] = {0};
    int n;

    while (scanf("%d", &n) != EOF) {
        if (n == 0) break;

        a[1][1] = 1;

        // 构造杨辉三角
        for (int i = 2; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                a[i][j] = a[i-1][j] + a[i-1][j-1];
            }
        }

        // 输出
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    }

    return 0;
}

题型总结

  1. 图形题:拆分成上、下、左、右,一层一层写循环。
  2. 矩阵 / 杨辉三角:用二维数组 ,找递推公式。
  3. 机试遇到:先画样例 → 找规律 → 写循环 → 调试。
相关推荐
老师我太想进步了20264 小时前
【数据结构-4】算法美学之顺序表
数据结构·算法
风影同志783244 小时前
编码器是激活函数吗?—— 一个看起来很像、其实不是的类比
算法
UIU1144 小时前
P1481 魔族密码
c++·算法·动态规划
Zwawa7 小时前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
加宝的起点雷达8 小时前
40 条候选里 38 条来自同一个源,主卡整屏重样
人工智能·算法·创业
秋天的怀念_David8 小时前
算法一千零一夜 · 第二十六夜 协议的母语
java·spring boot·算法
武子康8 小时前
h3.c 的两个权重槽,怎样把内存压力换成 SSD 等待
c语言·人工智能·agent
闻缺陷则喜何志丹10 小时前
【C++特性】四种类型转
c++·算法·类型转换