zoukankan      html  css  js  c++  java
  • UVA 400 Unix ls(排版题)

            该题中主要用到了整型相除截断的技巧。例如,计算行数和输出时候判断是否为最后一列。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int cmp(const void *_a, const void *_b) {
        char *a = (char*)_a;
        char *b = (char*)_b;
    
        return strcmp(a, b);
    }
    
    // 根据len长度的字符串,不足以空格补齐
    void print(char st[], int len) {
        int tmp = len - strlen(st);
        printf("%s", st);
        while (tmp--)
            printf(" ");
    }
    
    int main() {
        int n;
        char s[105][65];
    
        while (scanf("%d", &n) != EOF) {
            int lMax, c, r;
            lMax = c = r = 0;
            for (int i=0; i<n; i++) {
                scanf("%s", s[i]);
                int tmp = strlen(s[i]);
                if (tmp > lMax)
                    lMax = tmp;
            }
            c = 62 / (lMax+2);                      // 计算列数
            r = (n+c-1) / c;                        // 计算行数
    
            qsort(s, n, sizeof (s[0]), cmp);
    
            printf("------------------------------------------------------------\n");
            for (int i=0; i<r; i++) {
                for (int j=0; j<c; j++) {
                    int tmp = j*r + i;
    
                    if (tmp >= n) continue;
    
                    if (tmp >= ((int)((n-1)/r))*r)  // 如果为最后一列
                        print(s[tmp], lMax);
                    else
                        print(s[tmp], lMax+2);
                }
                printf("\n");
            }
    
        }
    
        return 0;
    }
    
  • 相关阅读:
    java学习网址大全
    Js 提示框
    api帮助文档及常见IT学习网站
    传参给 jsp
    jsp>action
    二级横菜单显示+sitemesh母板应用
    request,session
    map>json
    清空image画布并改变大小填充背景色
    取汉字首字母方法
  • 原文地址:https://www.cnblogs.com/zcube/p/4194546.html
Copyright © 2011-2022 走看看