格式化输出printf

printf的格式:

printf  format-string  [arguments...]

printf的重点是格式替代符(python bash通用):

特别说明:

%c如果参数是字符串,则取字符串第一个字符;

 固定 m 位小数 如此: printf("%.mf",a);
例如 printf("%.2f",a); 保留小数点后两位

"-"意为左对齐,若不加默认右对齐;%

printf "%-8c and  %-8.2f %-5d   \n" "abcdefg" 111.1 20
printf "%-8s and  %-2.2f %-5d   \n" "abcdefg" 111.1 20

输出为:

a        and  111.10   20
abcdefg  and  111.10 20

 

### C语言 `printf` 函数的格式化输出 #### 基本概念 `printf` 是 C 语言中的标准库函数之一,用于向控制台输出格式化的字符串。它声明于 `<stdio.h>` 头文件中,其基本语法如下: ```c int printf(const char *format, ...); ``` 其中,`const char *format` 表示格式化字符串,后续参数则是要替换占位符的具体数据[^1]。 --- #### 格式说明符 `printf` 的核心功能在于通过 **格式说明符** 来定义输出的内容和样式。以下是常见的格式说明符及其用途: | 占位符 | 描述 | |--------|--------------------------------------------------------------------------------------| | `%d` 或 `%i` | 输出十进制有符号整数 | | `%u` | 输出无符号十进制整数 | | `%f`, `%lf` | 输出浮点数(单精度或双精度),默认保留六位小数 | | `%e`, `%E` | 科学计数法表示浮点数,分别对应小写和大写的指数形式 | | `%g`, `%G` | 自动选择合适的科学计数法或者固定小数点方式来显示浮点数 | | `%s` | 输出字符串 | | `%c` | 输出字符 | | `%p` | 输出指针地址 | | `%x`, `%X` | 将整数以十六进制形式输出,`%x` 对应小写字母,`%X` 对应大写字母 | 此外,还可以使用修饰符调整宽度、对齐方式以及精度等属性。例如: - 宽度设置:`%-10d` 左对齐并占用至少 10 个字符的空间。 - 精度设置:`%.2f` 控制浮点数的小数部分只保留两位。 --- #### 百分数输出实例 当需要输出百分号 `%` 本身时,可以通过连续两个 `%` 实现。例如,在题目代码中: ```c #include <stdio.h> int main() { int a, b; double c; scanf("%d %d", &a, &b); c = (double)b / (double)a; // 输出带有三位小数的百分比数值 printf("%.3f%%\n", c * 100); return 0; } ``` 上述程序会读取两个整数输入,并计算它们的比例作为百分数输出,结果保留三位小数[^2]。 --- #### 十六进制输出实例 如果希望将整数转换成十六进制形式输出,可利用 `%x` 和 `%X` 格式说明符。例如: ```c #include <stdio.h> int main() { unsigned int num = 255; printf("Hexadecimal (lowercase): %x\n", num); // 输出 ff printf("Hexadecimal (uppercase): %X\n", num); // 输出 FF return 0; } ``` 此代码片段展示了如何用不同大小写的形式打印同一个整数的十六进制值[^3]。 --- #### 更复杂的格式化例子 下面是一个综合运用多种格式说明符的例子: ```c #include <stdio.h> int main() { int age = 28; float height = 175.5; const char* name = "Alice"; printf("Name: %-10s Age:%-3d Height:%6.2f m.\n", name, age, height); return 0; } ``` 运行该程序后,将会看到类似这样的输出: ``` Name: Alice Age:28 Height:175.50 m. ``` 这里 `-10s` 设置了字段左对齐且最小宽度为 10;而 `%6.2f` 则规定了浮点数占据六个位置,其中包括两位小数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值