分析:简单题,排序和字符串处理
知识点:
1.string S串的长度为S.length( );
2.求行数时,因为第一行的特殊情况,用rows = (n - 1) / cols +1;
代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int maxcol = 60;
const int maxn = 100+5;
string filenames[maxn];
//输出字符串S, 长度不足len时补字符extra
void print(const string& s, int len, char extra)
{
cout<<s;
for(int i = 0; i <len- s.length(); i++)
{
cout<< extra;
}
}
int main()
{
int n;
while(cin>>n)
{
int M = 0;
for(int i = 0; i < n; i++)
{
cin>> filenames[i];
M = max(M, (int)filenames[i].length());
}
//计算行数cols和列数rows
int cols = (maxcol - M) / (M+2) +1;
int rows = (n - 1) / cols +1;
print("",60,'-');
cout<<endl;
sort(filenames, filenames+n);
for(int r = 0; r < rows; r++)
{
for(int c = 0; c < cols; c++)
{
int idx = c * rows +r;
if(idx<n)
print(filenames[idx], c == cols-1 ? M: M+2, ' ');
}
cout<<endl;
}
}
return 0;
}