Unix ls UVA 命令400

方法一:(用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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unix系统中,有一些常用的命令用于日常操作。以下是一些常见的Unix日常操作命令: 1. `ls`:列出当前目录下的文件和文件夹。 2. `cd`:切换目录。使用`cd`命令后跟目标目录的路径,可以进入该目录。 3. `pwd`:显示当前所在的目录路径。 4. `mkdir`:创建新的目录。使用`mkdir`命令后跟要创建的目录名,可以在当前目录下创建一个新的目录。 5. `rm`:删除文件或目录。使用`rm`命令后跟要删除的文件或目录的路径,可以删除指定的文件或目录。请注意,删除操作是不可逆的,请谨慎使用。 6. `cp`:复制文件或目录。使用`cp`命令后跟源文件或目录的路径,以及目标文件或目录的路径,可以将源文件或目录复制到指定位置。 7. `mv`:移动文件或目录。使用`mv`命令后跟源文件或目录的路径,以及目标文件或目录的路径,可以将源文件或目录移动到指定位置,也可以用来对文件或目录进行重命名。 8. `cat`:查看文件内容。使用`cat`命令后跟要查看的文件名,可以显示该文件的内容。 9. `grep`:在文件中查找匹配的字符串。使用`grep`命令后跟要查找的字符串和要查找的文件名,可以找到包含该字符串的行。 10. `chmod`:修改文件或目录的权限。使用`chmod`命令后跟权限模式和要修改权限的文件或目录名,可以更改文件或目录的读、写、执行权限。 这只是一些常见的Unix日常操作命令,还有很多其他命令用于不同的操作。可以通过查阅Unix系统的文档或使用`man`命令来获取更详细的信息和使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值