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個字符的數組。
