代码
注意:i和j的顺序,k和n的顺序,很容易弄迷了!
知识点:int k=ceil((double)s.size()/n); //上取整 19.0/4 == 5 #include <math.h>
#include <iostream>
#include <cstring>
#include <math.h>
using namespace std;
//二维数组
int main()
{
int n;cin>>n; getchar();
string s;getline(cin,s); //19个
int k=ceil((double)s.size()/n); //上取整 19.0/4 == 5 #include <math.h>
char arr[110][110];
//k列 n行
int flag=0;
for(int i=k;i>=1;i--){ //第五列开始
for(int j=1;j<=n;j++){
if(flag<s.size()){
arr[j][i]=s[flag++];
}else{
arr[j][i]=' ';
}
}
}
//输出
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
cout<<arr[i][j];
}
cout<<endl;
}
return 0;
}