UVA 400 Unix ls

字符串,需要注意格式,和样例输出用fc命令比较,一致时就行了。

# include <cstdio>
# include <cstring>
# include <cstdlib>
# include <cmath>

# define N 100 + 5
# define M 60 + 5

int n;
char fname[N][M];

int cmp(const void *x, const void *y)
{
    return strcmp((char*)x, (char*)y);
}
int max(int x, int y)
{
    return x>y ? x:y;
}

int main()
{    
    int T = 0;
    while (~scanf("%d", &n))
    {
        ++T;
        int coll = 0;
        for (int i = 0; i < n; ++i)
        {
            scanf("%s", fname[i]);
            coll = max(coll, strlen(fname[i]));
        }
        qsort(fname, n, sizeof(fname[0]), cmp);
        int cols = 62 / (coll+2);
        if (T != 1) putchar('\n');
        for (int i = 0; i < 60; ++i) putchar('-'); putchar('\n');
        int line = (int)ceil(1.0*n/cols);
        for (int j = 0; j < line; ++j)
        {
            for (int i = 0; i < cols; ++i)
            {
                int t = j+line*i;
                if (t >= n) continue;
                int len = strlen(fname[t]);
                printf(fname[t]);
                if (i==cols-1|| (i<cols-1 && t+line<n)) for (int i = len+1; i <=coll+2 && i <= 62; ++i)
                    putchar(' ');
            }
            if (j<line-1) putchar('\n');
        }
    }
    
    return 0;
}

/**/

原文地址:https://www.cnblogs.com/JMDWQ/p/2620360.html