L1-039 古风排版 (20 分)传送门
思路:思路就是从前往后不断截取n个字符串,如果截取的字符串不足n个则补' '空格即可。
坑:由于控制台里'\0'和' '是分辨不出的,所以输出的“空格”很有可能是'\0'。。。所以会wronganswer//我太菜了,WA了三次都不知道哪错了。。。
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
string get[1010];
int main(){
int n,cnt = 0;
cin>>n;
string str;
getchar();
getline(cin,str);
for(int i = 0;i<str.size();){
int len = i+n-1;
if(len<str.size()){
get[cnt++] = str.substr(i,n);
i+=n;
}else{
get[cnt++] = str.substr(i);
len = len-str.size()+1;
for(int j = 0;j<len;j++)
get[cnt-1] = get[cnt-1]+" ";
i+=n;
}
}
for(int i = 0;i<n;i++){
for(int j = cnt-1;j>=0;j--){
cout<<get[j][i];
}
if(i!=n-1)cout<<endl;
}
return 0;
}