C语言中printf打印形式(%02X, %2X, %-2X, %.nf, %m.nf, %e, %m.ne, %2d, %-2d, %02d, %.2d)

本文详细介绍了C语言中printf函数的各种格式符,包括%d、%2d、%.2d等的基础用法,以及%2x、%f、%e等特殊格式的使用技巧,帮助理解不同格式符如何控制输出的宽度、填充方式和精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%2d,%-2d,%.2d,%02d

int main()
{
	int a = 1;
	printf("%d\n",a);
	printf("%2d\n",a);
	printf("%.2d\n", a);
	printf("%-2d\n",a);
	printf("%02d\n",a);
	return 0;
}

在这里插入图片描述
在这里插入图片描述

如图所示,2表示输出宽度,当大于输出宽度时,数据按原数据输出。当小于输出宽度2时,默认前补空格。如果有-号表示后补空格,.2d与02d相同,都表示不足宽度2时前补0.

%md类似,不在赘述

%2x, %02x, %-2x, %.2x

X 表示以十六进制形式输出
02 表示不足两位,前面补0输出;如果超过两位,则实际输出

#include<stdio.h>
int main()
{
	printf("%02X\n", 0x325);  
	printf("%02X", 0x5); 
	return 0;
}

在这里插入图片描述

如果写为 %2x,数据不足两位时,前面补空格输出,不额外补0输出; 如果超过两位,则实际输出

如果写成%-2x,数据不足两位时,后面补空格输出,不额外补0输出; 如果超过两位,则实际输出

如果写成%.2x效果和%02x相同

#include<stdio.h>
int main()
{
	printf("%2X\n", 0x325);  
	printf("%2X\n", 0x5); 
	printf("%-2X", 0x5);
	printf("1");//验证后面有空格
	return 0;
}

在这里插入图片描述
%mx类似,不在赘述

%f, %.nf, %m.nf,

#include<stdio.h>
int main()
{
	double num;

	num = 3.1415;
	printf("%f\n",num);
	printf("%5.2lf\n", num);
	printf("%.2lf\n", num);
	printf("%.6lf\n", num);

	return 0;
}

在这里插入图片描述
1.%f不限制宽度和小数点后面的位数
2.%mf表示限制数据输出宽度为m,这个数据宽度还包括小数点
不足宽度的前面补空格。超过宽度的数据正常输出。
eg:%5.2lf——3.14占4个宽度<5所以前面补空格。
3.%.nf——表示小数点后面保留两位小数。

%e, %.ne,%m.ne,

%e:以指数形式打印数字
在不指定输出宽度的情况下默认数字部分小数点6位,指数占4位。
注意:小数部分不算小数点,指数e与+/-都算指数位数。

在这里插入图片描述
在这里插入图片描述

%m.ne:m表示输出列数,n表示有几位小数
当输出列数>m时按原数据输出
当<m时前补空格输出

%-m.ne表示后面补空格。

%.ne表示不限制输出列数,小数部分保留n位。

int main()
{
	printf("%e\n",123.456);
	printf("%.2e\n", 123.456);
	printf("%13e\n",123.456);
	printf("%-13e", 123.456);
	printf("1\n");//验证空格
	printf("%3e\n", 123.456);
	printf("%13.2e\n", 123.456);
	return 0;
}

在这里插入图片描述

最后,此文章根据大量实验得来,有任何问题,欢迎指出

在C语言中,你可以编写一个简单的函数来验证并格式化浮点数。下面是一个示例程序,它会接收一个浮点数作为输入,并按照`%m.nf`和`%m.ne`格式进行输出,其中`m`表示整数部分的小数位数,`.nf`用于固定小数点后的位数,`.ne`则省略小数部分如果为0: ```c #include <stdio.h> #include <math.h> // Function to format and validate float number void format_float(float num, int precision) { // Check if the number is finite if (!isfinite(num)) { printf("Invalid floating-point number\n"); return; } // Split into integer and fractional parts long int integer = (long int)num; double fraction = modf(num, &integer); // Format with specified precision char buffer[64]; // Enough for most cases snprintf(buffer, sizeof(buffer), "%ld", integer); if (fraction > 0) { snprintf(buffer + strlen(buffer), precision, ".%*f", precision, fraction); } else if (precision > 0 && fraction == 0) { // If no decimal part, add a dot for .ne format buffer[strlen(buffer)] = '.'; buffer[strlen(buffer) + precision] = '\0'; } printf("%s\n", buffer); // Output formatted number } int main() { float input; printf("Enter a floating-point number (or 'q' to quit): "); while (scanf("%f", &input) == 1 && input != 'q') { int precision; // User-specified precision printf("Format: %m.nf or %m.ne (enter 'p' for default 2): "); scanf("%*[^\n]%d", &precision); format_float(input, precision > 0 ? precision : 2); // Use default of 2 if not specified } return 0; } ``` 在这个程序里,用户可以输入一个浮点数,然后选择`%m.nf`或`%m.ne`格式,还可以指定小数位数(默认为2)。如果输入的是非数字字符或'q',则退出循环。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NUC_Dodamce

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

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

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

打赏作者

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

抵扣说明:

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

余额充值