首先总结一下各类 格式控制符
%d :按整型数据的实际长度输出。
%ld :输出长整型数据。
%f :用来输出实数,包括单精度和双精度,以小数形式输出。系统默认整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入
(这里说句题外话,要记得 double类型的数据输入用 %lf 而输出用 %f,而float类型输入输出都用 %f)
%o :以八进制整数形式输出。
%s :用来输出字符串。
%x(或 %X 或 %#x 或 %#X): 以十六进制形式输出整数。具体不同请看文章末尾补充↓
①怎么使得输出的数据右对齐?
%md :只需要在格式控制符之间加一个数字m 来指定的输出字段的宽度。
#include <stdio.h>
int main(void)
{
int n1 = 7;
int n2 = 777;
int n3 = 7777777;
printf("%8d\n", n1);
printf("%8d\n", n2);
printf("%8d\n", n3);
return 0;
}
运行结果为:
7
777
7777777
②怎么使得输出的数据右对齐,且空位用0填充?
%0md :指定输出字段的宽度数字m前再加一个0。
#include <stdio.h>
int main(void)
{
int n1 = 7;
int n2 = 777;
int n3 = 7777777;
printf("%8d\n", n1);
printf("%8d\n", n2);
printf("%8d\n", n3);
return 0;
}
运行结果为:
00000007
00000777
07777777
③如何控制浮点数的小数位数?
%.nf :指定输出的小数位数为n,最后一位四舍五入。
#include <stdio.h>
int main(void)
{
float n1 = 7;
float n2 = 7.7777;
float n3 = 77.77777;
printf("%8f\n", n1); //小数点占一位,小数部分也占位
printf("%.3f\n", n2);
printf("%08.3f\n", n3);
return 0;
}
运行结果为:
7.000000
7.778
0077.778
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
补充 输出十六进制输出控制符相关知识:
#include <stdio.h>
int main(void)
{
int i = 77;
printf("%x\n", i); //%小写的x
printf("%X\n", i); //%大写的X
printf("%#x\n", i); //#小写的x
printf("%#X\n", i); //#大写的X
return 0;
}
运行结果为:
2f
2F
0x2f
0X2F
从输出结果可以看出:
如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。