中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。
输入格式:
输入在第一行给出一个正整数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个字符的数组。
原文:http://www.cnblogs.com/yueyiviolet/p/6660049.html