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个字符的数组。

posted @ 2017-04-02 22:46  meetviolet  Views(3403)  Comments(0Edit  收藏  举报