当前位置: 首页 > article >正文

pta系列之古风排版

9efbcbc3d25747719da38c01b3fa9b4f.gif

 c语言中的小小白-CSDN博客c语言中的小小白关注算法,c++,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm=1001.2014.3001.5343

给大家分享一句我很喜欢我话:

知不足而奋进,望远山而前行!!!

铁铁们,成功的路上必然是孤独且艰难的,但是我们不可以放弃,远山就在前方,但我们能力仍然不足,所有我们更要奋进前行!!!

今天我们更新了古风排版内容,

🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝

一、题目描述:

二、思路解析:

这个题的思路大概就是,我们得到有几行之后,输入字符串之后,需要知道一共需要几列,然后算出一共几列,然后记录一下,然后按题目中的情况去存入字符数组,注意,这里我们是要用二维数组,不明白二维数组的,可以去前面看一下这篇文章,关于C语言数组的认识(1)-CSDN博客

我在这篇文章中讲述了二维数组,然后逐步存入之后,我们就可以输出了。

这道题目的主要思路可以分为以下几个步骤:

  1. 读取输入:首先读取输入的正整数N,表示每一列的字符数,以及字符串。

  2. 确定列数:根据输入的字符串长度和N,可以计算出总共需要多少列。这里需要注意的是,最后一列可能不足N个字符。

  3. 创建二维数组:创建一个二维字符数组,大小为[N][列数],用来存储排版后的字符串。

  4. 从右向左填充字符:从输入的字符串末尾开始,从右向左逐个取字符,并按照古风排版的方式填入二维数组中。古风排版是从右向左竖向排版的,所以在二维数组中每一列上的字符应该是原字符串从右向左取得的。

  5. 输出结果:最后遍历二维数组,按照每列输出N个字符的方式输出排版后的字符串。

这个算法的关键在于如何将输入的字符串按照古风排版的方式填入二维数组中,然后再按照要求输出即可。这里的代码示例中已经包含了这个过程的实现。

三、代码实现:

C++版本:

#include<iostream>
#include<string>
using namespace std;

int main()
{
    int n = 0; cin >> n;
    cin.ignore();

    string str;
    getline(cin, str);

    int len = str.length();
    int col = len / n;
    if (len % n != 0)
    {
        col++;
    }
    char arr[100][100] = { 0 };
    int index = 0;
    for (int i = col - 1; i >= 0; i--)
    {
        for (int j = 0; j < n; j++)
        {
            if (index < len)
            {
                arr[j][i] = str[index++];
            }
            else arr[j][i] = ' ';
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cout << arr[i][j];
        }
        cout << endl;
    }


    return 0;}
#include<iostream>
#include<string>
using namespace std;

int main()
{
    int n = 0; cin >> n;
    cin.ignore();

    string str;
    getline(cin, str);

    int len = str.length();
    int col = len / n;
    if (len % n != 0)
    {
        col++;
    }
    char arr[100][100] = { 0 };
    int index = 0;
    for (int i = col - 1; i >= 0; i--)
    {
        for (int j = 0; j < n; j++)
        {
            if (index < len)
            {
                arr[j][i] = str[index++];
            }
            else arr[j][i] = ' ';
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cout << arr[i][j];
        }
        cout << endl;
    }


    return 0;}

C语言版本:

#include <stdio.h>
#include <string.h>

int main() {
    int n = 0;
    scanf("%d", &n);
    getchar(); // 消耗掉输入缓冲区中的换行符

    char str[1001];
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0'; // 移除fgets读入的换行符

    int len = strlen(str);
    int col = len / n;
    if (len % n != 0) {
        col++;
    }

    char arr[100][100] = {0};
    int index = 0;
    for (int i = col - 1; i >= 0; i--) {
        for (int j = 0; j < n; j++) {
            if (index < len) {
                arr[j][i] = str[index++];
            } else {
                arr[j][i] = ' ';
            }
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < col; j++) {
            printf("%c", arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}#include <stdio.h>
#include <string.h>

int main() {
    int n = 0;
    scanf("%d", &n);
    getchar(); // 消耗掉输入缓冲区中的换行符

    char str[1001];
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0'; // 移除fgets读入的换行符

    int len = strlen(str);
    int col = len / n;
    if (len % n != 0) {
        col++;
    }

    char arr[100][100] = {0};
    int index = 0;
    for (int i = col - 1; i >= 0; i--) {
        for (int j = 0; j < n; j++) {
            if (index < len) {
                arr[j][i] = str[index++];
            } else {
                arr[j][i] = ' ';
            }
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < col; j++) {
            printf("%c", arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}


http://www.kler.cn/a/272695.html

相关文章:

  • [嵌入式AI从0开始到入土]16_ffmpeg_ascend编译安装及性能测试
  • 2024-03-14学习笔记(YoloV9)
  • 比特币,区块链及相关概念简介(二)
  • d3dcompiler_43.dll缺失,5个方法处理d3dcompiler_43.dll文件缺失
  • JavaEE--小Demo
  • 二叉搜索树、B-树、B+树
  • Hadoop大数据应用:HDFS 集群节点缩容
  • Windows系统安装GeoServe结合内网穿透实现公网访问本地位置信息服务
  • C语言学习笔记day8
  • 1057:简单计算器
  • onnx 格式模型可视化工具
  • 疫情网课管理系统|基于springboot框架+ Mysql+Java+Tomcat的疫情网课管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)
  • 网络安全实训Day5
  • 开源模型应用落地-qwen模型小试-合并Lora模型-进阶篇(八)
  • 比特币,区块链及相关概念简介(一)
  • Oracle中的commit与rollback
  • 27-Java MVC 模式
  • WebRTC实现一对多直播模式和弹幕发送功能
  • 【机器学习】无监督学习:解锁数据中的潜在结构与关系
  • rsa数据加密无大小限制——golang实现