C++古风排版问题案例

题目描述

现代人写字是从左往右一行一行书写,而古代人写字是从右往左一列一列书写的,现请你编写一段程序,将一段文字按照古代人书写排版输出。

输入格式

第一行输入一个正整数 n(1≤n≤100),代表古代人书写每一列的字符数。

第二行给出长度不超过 500 的非空字符串,以回车结束。

输出格式

按照古代人的书写排版输出最终的字符串,每列 n 个字符。

注意:最后一列可能不足 n 个。

实现代码

#include <iostream>
#include <string>

using namespace std;

int main() {
    int n;
    string text;
    cin >> n >> text;

    int len = text.length();
    int rows = (len + n - 1) / n;  // 计算行数

    for (int j = n - 1; j >= 0; j--) {  // 从右往左遍历每一列
        for (int i = 0; i < rows; i++) {  // 遍历每一行
            int index = i * n + j;  // 计算字符在字符串中的下标
            if (index < len) {
                cout << text[index];  // 如果该位置有字符,则输出该字符
            }
        }
        cout << endl;
    }

    return 0;
}

该程序先读入每一列的字符数 n 和输入的字符串 text,然后计算出总行数 rows。接着,程序从右往左遍历每一列,并在每一列内从上到下遍历每一行。对于每个字符,在字符串中的下标可以通过行数和列数计算出来。如果该位置有字符,则输出它。注意,最后一列可能不足 n 个字符,需要特别处理。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享