排版类问题(机试高频)

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

  • 字符棱形、三角形、长方形
  • 旋转数字 / 矩阵旋转 / 矩阵翻转
  • 杨辉三角
  • 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. 机试遇到:先画样例 → 找规律 → 写循环 → 调试
相关推荐
Tyler_TXZ8 分钟前
C++C语言之——树
c语言·c++·算法·
小羊先生car16 分钟前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建
旖旎夜光18 分钟前
LeetCode 30:串联所有单词的子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
白狐_79824 分钟前
408 数据结构|完全二叉树两道典型题:第 6 层叶结点数与叶结点总数
数据结构·算法
lucas_AI26 分钟前
喂张白纸也能吐出证件号?文档 MLLM 的"关系级泄露"被测出来了
人工智能·算法·掘金技术征文
caimouse38 分钟前
ReactOS 图形系统分析(38):区域子系统 — region.c
c语言
手写码匠39 分钟前
华为云Flexus+DeepSeek征文|Dify 多 Agent 灰度发布实战:让每一次变更都“小步快跑、随时可回滚“
人工智能·深度学习·算法·aigc
嵌入式阿蔡41 分钟前
STM32时钟树详解:配错一个全乱套
c语言·stm32·单片机·嵌入式硬件
Nil2081 小时前
leetcode 48旋转图像
算法·leetcode·职场和发展
caimouse1 小时前
ReactOS 图形系统分析(37):路径子系统 — path.c
c语言·reactos