关闭

Unix ls UVA 命令400

74人阅读 评论(0) 收藏 举报
分类:
方法一:(用sort排序)(#include<algorithm>)
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<string>
  5. using namespace std;
  6. const int maxn=105;
  7. string str[maxn];
  8. void print1(string  s,int maxlen){               //在字符串后面加上空格以满足要求
  9.     int len=maxlen-s.length();
  10.     while(len--){
  11.         s+=" ";
  12.     }
  13.         cout<<s;
  14. }

  15. int main(){
  16.     int n;
  17.     while(cin>>n){
  18.         int maxlen=0;
  19.         for(int i=0;i<n;i++){
  20.         cin>>str[i];
  21.         if(maxlen<str[i].length())maxlen=str[i].length();
  22.         }
  23.         printf("------------------------------------------------------------\n");
  24.         sort(str,str+n);
  25.          int coloum=(60-maxlen)/(maxlen+2)+1;
  26.          int row=(n-1)/coloum+1;
  27.          for(int i=0;i<row;i++){
  28.              for(int j=i;j<coloum*row && j<n;j+=row){
  29.                  if(j==row*(coloum-1))print1(str[j],maxlen);     //每行的最后一个字符串
  30.                  else print1(str[j],maxlen+2);
  31.              }
  32.              cout<<endl;
  33.          }
  34.     } 
  35.     return 0;
  36. }


方法二:(用去qsort排序)(位于库函数  #include<stdlib.h>)
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. using namespace std;
  5. const int maxn=105;
  6. int cmp_str(const void *a,const void *b)          //本题用qsort排序二维字符数组,故需要编写比较函数
  7.   {
  8.       return strcmp((char*)a,(char*)b);
  9.   }
  10.   void print1(const char * s,int maxlen){             //打印字符串,没达到长度则通过空格补充
  11.       printf("%s",s);
  12.     int len=maxlen-strlen(s);
  13.     while(len--){
  14.         printf(" ");
  15.     }
  16. }
  17. int main()
  18. {
  19.     int n;
  20.     while(scanf("%d",&n)==1){
  21.         char str[maxn][65];
  22.         int maxlen=0;
  23.         for(int i=0;i<n;i++){
  24.             scanf("%s",str[i]);
  25.             if(maxlen<strlen(str[i]))maxlen=strlen(str[i]);
  26.         }
  27.         printf("------------------------------------------------------------\n");
  28.           qsort(str, n, sizeof(str[0]), cmp_str);
  29.          int coloum=(60-maxlen)/(maxlen+2)+1;
  30.          int row=(n-1)/coloum+1;
  31.     for(int i=0;i<row;i++){
  32.              for(int j=i;j<coloum*row && j<n;j+=row){
  33.                  if(j==row*(coloum-1))print1(str[j],maxlen);
  34.                  else print1(str[j],maxlen+2);
  35.              }
  36.              printf("\n");
  37.          }
  38.     }
  39.     return 0; 
  40. }


注意:sort是qsort的升级版,能用sort就最好使用sort.
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43928次
    • 积分:4621
    • 等级:
    • 排名:第6715名
    • 原创:421篇
    • 转载:2篇
    • 译文:0篇
    • 评论:13条
    最新评论