先排序,再按要求输出即可。
#include <stdio.h>
#include <stdlib.h>//使用qsort()需要调用的头文件
#include <string.h>
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
char filenames[105][65];
int main()
{
/*
freopen("400.in","r",stdin);
freopen("400.out","w",stdout);
//*/
int max_len,max_col,r,n;
while(scanf("%d",&n)!=EOF)
{
max_len=0;
for(int cas=0;cas<n;cas++)
{
scanf("%s",filenames[cas]);
if(strlen(filenames[cas])>max_len)
max_len=strlen(filenames[cas]);
}
qsort(filenames,n,65*sizeof(char),cmp);
max_col=62/(max_len+2);
r=(n-1)/max_col+1;//这里要取上届值
for(int i=0;i<60;i++)
printf("-");
printf("\n");
for(int i=0;i<r;i++)
{
for(int j=0;j<max_col && j*r+i<n;j++)
{
printf("%s",filenames[j*r+i]);
for(int u=0;u<max_len-strlen(filenames[j*r+i]);u++)
printf(" ");
if(j!=max_col-1)
printf(" ");
}
printf("\n");
}
}
return 0;
}