語法書 / AA 競程語法書 下冊 / 附錄 / A. C 與 C++ 對照表

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 沒有的東西,考卷不會考。 你在下冊學的 stringvectorpairsort、range-based for、auto 這些都是 C++ 才有的,C 題本裡不會出現——考卷只會用陣列、迴圈、函式這些兩邊都有的零件。

三、& 有兩個意思。 scanf("%d", &n)&取址(把變數的位置交出去),而 a & b&位元運算——兩個完全不同的東西,靠位置分辨:貼在變數前面的是取址,夾在兩個值中間的是位元運算。