A. C 與 C++ 對照表
考卷上的程式片段長得跟你平常寫的不太一樣。逐格對照如下:
| 你熟悉的 C++ | 考卷上的 C | 說明 |
|---|---|---|
#include <iostream> |
#include <stdio.h> |
標頭檔換名字;片段題常常整個省略 |
cin >> n; |
scanf("%d", &n); |
見 B 節 |
cout << n << '\n'; |
printf("%d\n", n); |
見 B 節 |
string s; |
char s[100]; |
C 沒有 string;字串就是字元陣列(8.6) |
s.size() |
strlen(s) |
8.8 教過的 cstring 函式 |
s == t(字串相等) |
strcmp(s, t) == 0 |
8.9:相等時回傳 0 |
vector<int> v(n); |
int v[100]; |
C 沒有 vector,一律固定大小的陣列 |
bool flag = true; |
int flag = 1; |
C 用 int 當真假值 |
true / false |
1 / 0 |
0 是假、非 0 都是真(上冊 3.1) |
sort(a, a + n); |
一段自己寫的排序迴圈 | 考卷會把排序程式碼直接寫給你看(11.10 的泡沫排序長得就很像) |
swap(a, b); |
int t = a; a = b; b = t; |
C 沒有內建 swap;暫存變數三行是上冊 3.9 的老朋友 |
¶三個讀題前先知道的事
一、片段題沒有 main。 為了節省篇幅,題目常常只給一段程式碼,沒有 #include、沒有 int main()。看到這種格式不用緊張,把它當成 main 裡面的內容讀就好。
二、C 沒有的東西,考卷不會考。 你在下冊學的 string、vector、pair、sort、range-based for、auto 這些都是 C++ 才有的,C 題本裡不會出現——考卷只會用陣列、迴圈、函式這些兩邊都有的零件。
三、& 有兩個意思。 scanf("%d", &n) 的 & 是取址(把變數的位置交出去),而 a & b 的 & 是位元運算——兩個完全不同的東西,靠位置分辨:貼在變數前面的是取址,夾在兩個值中間的是位元運算。