printf()函数高级练习题

深入理解printf函数的高级格式控制与复杂应用

进阶挑战
1
printf()格式控制进阶

分析以下代码,预测输出结果:

#include <stdio.h> int main() { int x = 1234; float y = 123.456; printf("%-10d\n", x); printf("%10.2f\n", y); printf("%+d\n", x); printf("%#x\n", x); return 0; }

挑战思考

1. %-10d 中的 - 符号有什么作用?

2. %10.2f 中的 10.2 表示什么?

3. %+d 会如何影响输出?

4. %#x 会输出什么格式的结果?

解析与答案

输出结果:

1234 123.46 +1234 0x4d2

详细解析:

  1. %-10d:输出整数,左对齐,宽度10 → "1234 "
  2. %10.2f:输出浮点数,宽度10,保留2位小数 → " 123.46"
  3. %+d:输出带符号的整数 → "+1234"
  4. %#x:输出十六进制,带0x前缀 → "0x4d2"(1234的十六进制是4d2)
2
printf()缓冲区与格式控制

以下程序运行时,当输入值为"123456789"时,输出结果是什么?

#include <stdio.h> int main() { int a, b, c; printf("请输入:"); scanf("%3d%2d%2d", &a, &b, &c); printf("a=%d, b=%d, c=%d\n", a, b, c); return 0; }

挑战思考

1. %3d 会读取输入中的几位数字?

2. %2d 会读取输入中的几位数字?

3. 输入"123456789"时,变量a、b、c的值分别是什么?

解析与答案

输出结果: a=123, b=45, c=89

详细解析:

  • %3d:读取3位整数 → a=123
  • %2d:读取2位整数 → b=45
  • %*d:读取1个整数但忽略不存储 → 读取678
  • %2d:读取2位整数 → c=89
3
printf()返回值应用

以下程序的输出是什么?解释printf返回值的用途。

#include <stdio.h> int main() { int count; count = printf("Hello, World!\n"); printf("printf returned: %d\n", count); count = printf("Value: %d\n", 12345); printf("printf returned: %d\n", count); return 0; }

挑战思考

1. printf函数的返回值表示什么?

2. 第一个printf调用会输出多少字符?

3. 第二个printf调用会输出多少字符?

4. 如何利用printf返回值实现格式化对齐?

解析与答案

输出结果:

Hello, World! printf returned: 14 Value: 12345 printf returned: 12

详细解析:

  1. 利用返回值可以计算实际输出长度,用于精确控制格式
进入输入练习