题目:http://lx.lanqiao.cn/problem.page?gpid=T6
#include<iostream>
#include<stdlib.h>
#include<cstring>
using namespace std;
int main()
{
for(int i=0;i<32;i++){
char s[10];
string str = "";
itoa(i,s,2); //itoa(整型数, 字符数组, 进制) 头文件stdlib.h
if(i<2)
str="0000";
else if(i<4)
str="000";
else if(i<8)
str="00";
else if(i<16)
str="0";
cout<<str;
printf("%s\n", s); //printf:字符串不能控制补0
}
return 0;
}
#include<iostream>
#include<stdlib.h>
#include<cstring>
#include<iomanip>
using namespace std;
int main()
{
for(int i=0;i<32;i++){
char s[10];
string str = "";
itoa(i,s,2); //itoa(整型数, 字符数组, 进制) 头文件stdlib.h
cout << setw(5) << setfill('0') << s << endl;
}
return 0;
}
sprintf(字符数组,格式化字符串,任意个可选参数),将一个格式化的字符串输出到一个目的字符串 。
printf将一个格式化的字符串输出到屏幕。
itoa: 可以转换二进制到字符串,但不能补零。(后期按条件补零)
sprintf:可以转换进制补零到字符串,但没有二进制。
控制符 | 说明 | 示例 |
---|---|---|
%d | 按十进制整型数据的实际长度输出。 | |
%ld | 输出长整型数据 。 %lld %l64d(https://blog.csdn.net/OneLine_/article/details/80765478) | |
%md | m 为指定的输出字段的宽度。 如果数据的位数小于 m,则左端补以空格;若大于 m,则按实际位数输出。 | int i = 5; %03d 005 %3d 5 |
%o | 以八进制整数形式输出。 | |
%x(或 %X 或 %#x 或 %#X) | 以十六进制形式输出整数。 | int i = 47 %x 2f |
%u | 输出无符号整型(unsigned)。 输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。 | |
%c | 输出一个字符 | |
%f | 用来输出实数,包括单精度和双精度,以小数形式输出。 不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。 | |
%.mf | 输出实数时小数点后保留 m 位。 | |
%s | 输出字符串,要先定义字符数组或字符指针存储或指向字符串。 |
控制符 | 说明 | 示例 |
---|---|---|
setw(n) | 控制预设宽度,只对其后紧跟的输出产生作用。若输入的内容超过setw()设置的长度,则按实际长度输出。默认右对齐。 | |
setfill(char c) | 在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充。 | |
l eft和right | 更改对齐方式。默认的是右对齐。 | |
fixed | 使用小数计数法。 | |
setprecision(n) | 控制输出流显示浮点数的精度,即小数点后的位数。 | |
scientific | 使用科学计数法。 | |
showpos | 在正数之前加上正号。 |