順序結構是程式最基礎的執行模式。本文系統整理 C 語言語句分類、標準輸入輸出庫函式、格式化控制、字元處理函式,並以一元二次方程求根、兩位數倒序為例示範完整程式結構。
| 類別 | 關鍵字/形式 | 說明 |
|---|---|---|
| 表達式語句 | expr; | 表達式後加分號,有值但語句無值 |
| 流程控制 | if, switch, for, while, do-while | 分支與迴圈 |
| 跳轉語句 | break, continue, goto, return | 改變執行流向 |
| 複合語句 | { stmt1; stmt2; ... } | 大括號包裹,形成區塊,可聲明區域變數 |
| 空語句 | ; | 佔位,常用於迴圈體為空或預留代碼 |
| 聲明語句 | int a=10; | 變數定義與初始化 |
| 函式調用 | func(); | 表達式語句的一種 |
複合語句內聲明的變數,作用域限於該區塊:
int a=11, b=21, c=31;
printf("外層: a=%d b=%d c=%d\n", a, b, c); // 11 21 31
{
int b=22; // 遮蔽外層 b
float c=3.3; // 遮蔽外層 c
printf("內層: a=%d b=%d c=%f\n", a, b, c); // 11 22 3.3
a = b; // 修改外層 a
}
printf("外層: a=%d b=%d c=%d\n", a, b, c); // 22 21 31 (a被改, b,c恢復)
若內層也聲明 int a=1,則外層 a 完全不受影響。
#include <stdio.h> // printf, scanf, putchar, getchar, puts, gets...
#include <math.h> // sin, cos, sqrt, pow...
printf("格式字串", 引數...)
| 格式 | 對應型別 | 範例 |
|---|---|---|
| %d / %i | int | 有號十進制 |
| %u | unsigned int | 無號十進制 |
| %o | unsigned int | 八進制 |
| %x / %X | unsigned int | 十六進制 |
| %f | float/double | 定點小數 |
| %e / %E | float/double | 科學記號 |
| %g / %G | float/double | 自動選擇 %f/%e |
| %c | char | 單一字元 |
| %s | char* | 字串 |
| %p | void* | 位址 |
寬度/精度:%10.2f(寬10、小數2位)、%-5d(左對齊)。
putchar('A'); putchar('\n'); putchar('\101'); // 八進位 ASCII
單字元輸出,效率高於 printf("%c")。
scanf("格式字串", &var...) 需傳位址。
常見格式:%d %f %lf %c %s。%lf 對應 double。
| 函式 | 回顯 | 緩衝 | 換行處理 | 標準 |
|---|---|---|---|---|
| getchar() | 是 | 行緩衝 | 讀入 '\n' | C 標準 |
| getch() | 否 | 無緩衝 | 直接返回 | conio.h (非標準) |
| getche() | 是 | 無緩衝 | 直接返回 | conio.h (非標準) |
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, disc, x1, x2;
printf("輸入係數 a b c: ");
scanf("%lf %lf %lf", &a, &b, &c);
disc = b*b - 4*a*c;
if (disc < 0) {
printf("無實根\n");
} else {
x1 = (-b + sqrt(disc)) / (2*a);
x2 = (-b - sqrt(disc)) / (2*a);
printf("x1 = %.4f, x2 = %.4f\n", x1, x2);
}
return 0;
}
#include <stdio.h>
int main() {
int m, n;
printf("輸入兩位數 (10-99): ");
scanf("%d", &m);
n = m % 10; // 個位
m = n * 10 + m / 10; // 十位移到個位,個位移到十位
printf("倒序後: %d\n", m);
return 0;
}
main 僅負責流程協調scanf 回傳值檢查、sqrt 定義域檢查、除零檢查順序程式雖簡單,但包含語句分類、作用域、I/O 格式化、數學庫等核心知識點。扎實掌握 printf/scanf 格式字串、理解複合語句建立新作用域、熟悉字元輸入函式差異,是進階學習分支、迴圈、函式、指標的基石。