patL1-039

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heermu/article/details/79764689

古风排版

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

输入格式:

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

输出格式:

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

输入样例:
4
This is a test case
输出样例:
asa T
st ih
e tsi
 ce s
 
 

做题过程:找字符串下标的规律输出,例如样例中第一行下标16 12 8 4 0,第二行下标17 13 9 5 1以此类推,可发现,同行的两个下标间相差n,而同列的下标间相差1,n为行数,如此输出字符串即可,而下标超出字符串大小范围的,输出空格。

#include <bits/stdc++.h>
int main()
{
    int n,id=0;
    char ss[2001];
    scanf("%d",&n);
    scanf("\n");
    gets(ss);
    id=(strlen(ss)-1)/n*n;//第一行第一列字符的下标
    for(int i=id;i<id+n;i++)
    {
        int temp,m;
        temp=(strlen(ss)-1)/n+1;//列数
        m=i;
        while(temp--)
        {
            if(m<strlen(ss))//注意这里不能写strlen[m]!='\0',后面会出现乱码
            {
                printf("%c",ss[m]);
            }else
            printf(" ");
            m=m-n;
        }
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/heermu/article/details/79764689