详解C语言格式化输入输出(2)

序言

这个主要说一下,%5d 、%-5d、%2.3f等这些转换说明的作用和区别,这里面归根到底都是 %m.pX 的变体,

下面我就依次说一下 m、p、X都是什么

  • X 数据输出格式
  • m 最小字段宽度
  • p 精度

数据输出格式

数据输出的格式与很多,下面我列出一张表

X例子说明
d%d打印int型,m默认1
f%f打印float型,小数点后默认6位
e%e以科学计数法的形式打印,小数点后默认6位
g%g以科学计数法或者float型打印,方式看g的大小选择

e

例子

#include <stdio.h>

int main()
{
	float a = 1001.0f;
	printf("%e\n", a);
	return 0;
}

image-20220303184859452

g

例子

#include <stdio.h>

int main()
{
	float a = 1001.0f;
	printf("a == %g\n", a); 
	float b = 1000000.132f;
	printf("b == %g\n", b);
	return 0;
}

image-20220303185106718

最小字段宽度

m 代表我们要输出的数值占据多少字宽,我们先看看例子

这个代码是指我们 为a 分配10个字宽,要是a的数据长度不够10个,用空格填充

  • + 表示数据在后
  • - 表示数据在前
#include <stdio.h>

int main()
{
	int a = 11;
	printf("%10d\n", a); // + 号省略
	printf("%-10d\n", a);
	return 0;
}

image-20220303181548802

或许有人可能会疑惑,当我们数值的长度大于 m 的值会发生什么,其实从m的名字就可以知道了,m是最小字段宽度,但我们给的数据的长度大于m,会打印出数值的值

#include <stdio.h>

int main()
{
	int a = 11111111;
	printf("%5d\n", a);
	return 0;
}

image-20220303182119693

这里要提一句 %10d 当中, m = 10, p = 0 ,X = d 当我们将p省略时,逗号也一起省略了

精度

谈到精度就要提到浮点数了,也就是我们数学中的小数,我们都知道小数是由精度的,比如说 小数点后保留三位,这在C语言中也可以通过p表示出来

  • %.2f 表示 小数点保留2位
  • %4.2f 表示最小字段是4,小数点后保留2位
#include <stdio.h>

int main()
{
	float a = 1.0f;
	printf("%15.2f\n", a);
	return 0;
}

image-20220303183512186

%.2f 要是我们省略m,逗号不跟着省略

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于C语言中的`printf`函数,它是用于格式化输出的常用函数。它的原型如下: ```c int printf(const char *format, ...); ``` 其中,`format`是一个字符串,用于指定输出的格式;而`...`表示可变参数,用于指定要输出的内容。 在`format`字符串中,可以包含普通字符和转换说明符。转换说明符以`%`开头,后面跟着一个字母,用于指定要输出的变量的类型和格式。 以下是一些常见的转换说明符及其用途: - `%d`:输出十进制整数。 - `%f`:输出浮点数。 - `%c`:输出字符。 - `%s`:输出字符串。 - `%p`:输出指针的地址。 - `%x`:输出十六进制整数。 除了上述基本的转换说明符外,还可以使用一些修饰符来进一步控制输出的格式。例如: - `%.2f`:保留两位小数的浮点数。 - `%6d`:输出宽度为6的整数,不足位数用空格填充。 除了转换说明符和修饰符外,还可以使用转义字符来输出特殊字符。例如,`\n`表示换行符,`\t`表示制表符。 下面是一个示例代码,演示了如何使用`printf`函数进行格式化输出: ```c #include <stdio.h> int main() { int num = 10; float pi = 3.14159; char ch = 'A'; char str[] = "Hello"; printf("Integer: %d\n", num); printf("Float: %.2f\n", pi); printf("Character: %c\n", ch); printf("String: %s\n", str); return 0; } ``` 以上代码的输出结果为: ``` Integer: 10 Float: 3.14 Character: A String: Hello ``` 希望对你有所帮助!如果有更多问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玄鸟轩墨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值