首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言核心知識點速查表:運算子、流程控制、陣列、字串、排序

     編輯:關於C

1. 自增/自減運算子

  • ++a:先加後用(值為 a+1)
  • a++:先用後加(值為 a,隨後 a 變 a+1)
int x=5, y;
y = x++ + 5; // y=10, x=6
y = ++x + 5; // y=12, x=7

2. 位元運算

運算子規則範例
& (AND)同為1得11110 & 1010 = 1010
| (OR)同為0得01110 | 1010 = 1110
~ (NOT)逐位取反~1111 = 0000
^ (XOR)異為1,同為01010 ^ 0110 = 1100
<< (左移)乘 2^nx << 1 ≡ x*2

3. 條件運算子 (三元)

max = (a > b) ? a : b; // 真取前,假取後

4. 最大公約數 (GCD) - 輾轉相除法


int gcd(int a, int b) {
    while (b) { int t = a % b; a = b; b = t; }
    return a;
}
// LCM = a * b / gcd(a,b)

5. 隨機數生成


// 產生 [x, y] 範圍整數
int rand_range(int x, int y) {
    return x + rand() % (y - x + 1);
}
// 例:10~100 → 10 + rand() % 91

6. 水仙花數(三位數自冪和)


// 153 = 1^3 + 5^3 + 3^3
for (int i=100; i<1000; i++) {
    int a=i/100, b=i/10%10, c=i%10;
    if (a*a*a + b*b*b + c*c*c == i) printf("%d ", i);
}

7. 字串長度未知時的遍歷


for (int i=0; str[i]; i++) { ... } // 遇 \0 結束

8. 亂數填充陣列指定範圍


for (int i=0; i<20; i++)
    a[i] = rand_range(30, 70); // [30,70]

9. 冒泡排序 (升序)


void bubble_sort(int a[], int n) {
    for (int i=0; ii; j--)
            if (a[j] < a[j-1]) {
                int t = a[j]; a[j] = a[j-1]; a[j-1] = t;
            }
}

10. 字元陣列 vs 字串常值


char str1[] = {'o','k'};      // 長度2,無 \0
char str2[] = "ok";           // 長度3,含隱含 \0
char str3[10] = "hello";      // 初始化前5字元,其餘自動填 \0

11. 逐字元讀取輸入直到換行


char c;
while ((c = getchar()) != '\n') {
    putchar(c);
}

12. 字串初始化多種寫法


char s1[] = "hello";
char s2[10] = {'h','e','l','l','o'};
char s3[10] = "hello"; // 推薦:自動補 \0

速記口訣

  • 前綴自增先加,後綴自增後加。
  • 位元運算:與全1、或全0、異或異1、非全反。
  • GCD 輾轉相除,LCM 乘積除 GCD。
  • 冒泡 n-1 趟,每趟把最大泡到最後。
  • 字串必以 \0 結尾,strlen 不算 \0。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved