排版类问题(机试高频)

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

  • 字符棱形、三角形、长方形
  • 旋转数字 / 矩阵旋转 / 矩阵翻转
  • 杨辉三角
  • 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. 机试遇到:先画样例 → 找规律 → 写循环 → 调试
相关推荐
卷福同学3 小时前
不用服务器,不用配环境,我10分钟上线了一个AI Agent
人工智能·后端·算法
问君能有几多愁~5 小时前
C++ 数据结构复习笔记
数据结构·c++·笔记
至乐活着6 小时前
深入解析跳表SkipList:原理、实现与性能优化实战
数据结构·算法·跳表·skiplist·java实现
Drone_xjw6 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++
Jerry6 小时前
LeetCode 383. 赎金信
算法
ai产品老杨7 小时前
H264 H265视频分析常见问题和排查清单
人工智能·算法·音视频
Jerry7 小时前
LeetCode 454. 四数相加 II
算法
可编程芯片开发8 小时前
基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真
算法
Jerry8 小时前
LeetCode 202. 快乐数
算法
hans汉斯8 小时前
基于改进交叉熵损失函数与Transformer的心电信号高风险分类研究
功能测试·深度学习·算法·yolo·目标检测·分类·transformer