L1-039. 古风排版
L1-039. 古风排版
中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。
输出格式:
按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)
输入样例:4 This is a test case输出样例:
asa T st ih e tsi ce s
#include<iostream> #include<cstring> using namespace std; int main(){ int N,len=0,i,j,x; char s[1100]; memset(s,0,1100); scanf("%d",&N); getchar(); while((s[len]=getchar())!='\n'){len++;} if(len%N!=0){for(i=0,x=len;i<N-len%N;i++)s[x++]=' ';} else x=len; for(i=0;i<N;i++){ for(j=x/N-1;j>=0;j--){ printf("%c",s[j*N+i]); } printf("\n"); } }
在最后一列补进去的空格足够的空格,然后按照行和列的一维数组下标特征值输出就好啦。
需要注意的是,如果采取补进去空格的这种方法,需要把数组开到足够大,(刚开始开了1001,一直提示段错误),假设1000个字符串,N=99,则需要一个容纳1089个字符的数组。