L1-039 古风排版 (20分)

0
9

L1-039 古风排版 (20分)

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数 \(N(\lt 100)\),是每一列的字符数。第二行给出一个长度不超过 \(1000\) 的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列 \(N\) 个字符(除了最后一列可能不足 \(N\) 个)。

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsi
 ce s

解题思路:

通过在字符串末尾添加一定数量的空格,使得字符串的长度变为 \(N\) 的整数倍。再根据题目中的行列转换规则,逐行输出。容易得出第 \(i\) 行第一个字符为新的字符串中倒数第 \(N+1-i\) 个字符,再往前数 \(N\) 个便是下一个字符,以此类推。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,len;
string s;
int main()
{
    cin>>n;
    while(getchar()!='\n')continue;
    getline(cin,s);
    len=s.length();
    int t=len%n;
    if(t)                                   /*无法整除时添加一定数量的空格*/
        for(int i=1;i<=n-t;i++)s+=" ";
    len=s.length();
    for(int i=1;i<=n;i++)                   /*逐行输出*/
    {
        for(int j=len+i-1-n;j>=0;j-=n)cout<<s[j];
        cout<<endl;
    }
    return 0;
}

<

发布回复

请输入评论!
请输入你的名字