L1-039. 古风排版

cin.getline(a, 3)只会向数组a中读进2个字符;

 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main()
{
int n;
char a[1001];
cin >> n;
getchar();
cin.getline(a, 1001);
int len = strlen(a);
int k=0; //计数器
int row;
if(len%n==0)
row = len/n;
else
row = len/n+1; //c++默认向下取整
//char b[n][row];

char *b[n];
for(int i=0; i<n; i++)
{
char * temp= (char*)malloc(sizeof(char)*(row+1));
memset(temp, ' ', sizeof(char)*row);
b[i] = temp;
}
for(int i=0; i<n; i++)
b[i][row] = '\0';

for(int i=row-1; i>-1; i--)
for(int j=0; j<n; j++) //将a中的字符串放到二维数组中
{
b[j][i] = a[k];
k++;
if(k==len)
goto breakLoop;
}
breakLoop: cout << b[0];
for(int i=1; i<n; i++)
{
cout << endl << b[i];
}
return 0;
}

posted @ 2017-08-09 19:55  diamondDemand  阅读(153)  评论(0编辑  收藏  举报