C++算法题的一些输出技巧

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

C语言

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

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

这样得到的结果就是

3
  3

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

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

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

int n = 4;
printf("%-0*d\n",n,3);
printf("%0*d\n",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",n);
printf("%X\n",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();

猜你喜欢

转载自www.cnblogs.com/harrylyx/p/12421276.html