printf 是 C 語言最常用的輸出函數,掌握其控制字符串格式、修飾符、場寬精度控制,能實現靈活多樣的輸出效果。
printf("控制字符串", 輸出項列表);
%[標誌][場寬][.精度][長度]類型
常用格式字符表:
| 字符 | 輸出類型 | 示例 |
|---|---|---|
| d/i | 有符號十進制整數 | %d |
| o | 八進制無符號整數 | %o |
| x/X | 十六進制無符號整數 | %x |
| u | 十進制無符號整數 | %u |
| c | 單字符 | %c |
| s | 字符串 | %s |
| f | 浮點數(小數形式) | %f |
| e/E | 浮點數(指數形式) | %e |
| g/G | 自動選擇 f 或 e 中較短者 | %g |
| p | 指針地址 | %p |
.數字。對浮點數指定小數位數;對字符串限制最大字符數。-左對齊,+顯示符號,0前導填零,空格正數前加空格,#替代形式(如 %#x 輸出 0x 前綴)。
%5.2f → 12.35 (場寬5, 精度2, 四捨五入)
%2.1f → 12.3 (場寬小於整數位,按實際位數輸出,但保留1位小數)
int i = 123;
printf("%*d", 5, i); // * 由參數 5 指定場寬,輸出 " 123"
場寬可由變量動態決定,極大增強靈活性。
int a=1023; long b=2222; short c=123; unsigned d=1234; char e='x';
float f=3.1415926535898; double g=3.1415926535898;
printf("a=%d\n", a); // 1023
printf("a=%o\n", a); // 1777 (八進制)
printf("a=%x\n", a); // 3ff (十六進制)
printf("b=%ld\n", b); // 2222
printf("c=%d\n", c); // 123
printf("d=%u\n", d); // 1234
printf("e=%c\n", e); // x
printf("f=%f\n", f); // 3.141593 (默認6位小數)
printf("g=%f\n", g); // 3.141593
char ch = getchar(); // 讀取鍵盤單字符
putchar(ch); // 輸出單字符,等價 printf("%c", ch)
printf("%d\n", ch); // 輸出 ASCII 碼
#include <stdio.h>。putchar 僅接受單字符,不能輸出字符串。
float a1,b1,a2,b2; char ch;
printf("Complex Addition\n");
printf("First complex:\nReal: "); scanf("%f",&a1);
printf("Imag: "); scanf("%f",&b1);
printf("%.2f+i%.2f\n",a1,b1);
printf("Second complex:\nReal: "); scanf("%f",&a2);
printf("Imag: "); scanf("%f",&b2);
printf("%.2f+i%.2f\n",a2,b2);
printf("Sum: %.3f+i%.3f\n", a1+a2, b1+b2);
printf("Press Enter..."); ch=getchar(); ch=getchar(); // 吸收換行
運行效果: 友好提示輸入實部虛部,格式化輸出復數與和,最後暫停等待用戶確認。
精通 printf 格式控制的每一個修飾符、動態場寬技巧、字符級 I/O 配合,能讓程序輸出既專業又友好,是 C 語言工程實踐的基本功。