zoukankan      html  css  js  c++  java
  • C++算法题的一些输出技巧

    输出时左对齐与右对齐,补全

    C语言

    在C语言中我们可以这样来实现左右对齐

    printf("%-3d
    ",3);
    printf("%3d
    ",3);
    

    这样得到的结果就是

    3
      3
    

    如果像补零的话,就这样写

    printf("%-03d
    ",3);
    printf("%03d
    ",3);
    
    3
    003
    

    如果保留多少个空格是一个变量的话,则变量部分使用*来代替

    int n = 4;
    printf("%-0*d
    ",n,3);
    printf("%0*d
    ",n,3);
    
    3
    0003
    

    C++

    在C++中是要引入iomanip这个头文件,然后

    • 使用setw来控制间距
    • 使用setiosflags来控制左右对齐
    • 使用setfill来控制补什么字符
    #include <iomanip>
    #include <iostream>
    
    using namespace std;
    
    int main(){
    	int n = 4;
    	cout << setiosflags(ios::left) << setw(n) << setfill('0') << 3 << endl;
    	cout << setiosflags(ios::right) << setw(n) << setfill('0') << 3 << endl;
        return 0;
    }
    
    3000
    0003
    

    注意:这里C++把所有空格全换乘0了。

    输出时改变进制

    在C语言中使用%d,%o,%x来改变,比如

    int n = 15;
    printf("%dn",n);
    printf("%o",n);
    printf("%x
    ",n);
    printf("%X
    ",n);
    
    15
    17
    f
    F
    

    在C++中

    int n = 15;
    cout << n << endl;
    cout << oct << n << endl;
    cout << hex << n << endl;
    
    15
    17
    f
    

    输出到文件

    在C/C++中如何使用输入输出流呢?下面我们来一一看,其实都很简单。

    C

    首先我们需要文件指针

    FILE *fin, *fout;
    fin = fopen("data.in", "rb");
    fout = fopen("data.out", "wb");
    

    然后我们只需要输入和输出改成如下就可以了

    int a;
    fscanf(fin, "%d", &a);
    fprintf(fout, "%d", a);
    

    等我们不想用文件输入输出的时候只需要把fin改成stdin,把fout改成stdout就行了。

    int a;
    fscanf(stdin, "%d", &a);
    fprintf(stdout, "%d", a);
    

    最后我们使用完毕,要记得的关闭文件

    fclose(fin);
    fclose(fout);
    

    C++

    优秀的C++就更简单了,只要引入fstream头文件,然后不需要指针,这里直接就是专门的类ifstreamofstream.

    ifstream fin("data.in");
    ofstream fout("data.out");
    

    同样的,把输入输出该成

    int a;
    fin >> a;
    fout << a << endl;
    

    不想用的时候改回来就行了

    int a;
    cin >> a;
    cout << a << endl;
    

    最后我们使用完毕,要记得的关闭文件

    fin.close();
    fout.close();
    
  • 相关阅读:
    lambda表达式
    You can't specify target table 't_mail_marketing' for update in FROM clause
    从对象list中获取对象属性list
    枚举缓存
    Solr语法
    通过Telnet查询注册服务
    日志查询
    Maven 屏蔽静态文件
    抽奖
    随机码生成方法
  • 原文地址:https://www.cnblogs.com/harrylyx/p/12421276.html
Copyright © 2011-2022 走看看