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