Bỏ qua để đến nội dung

Bài tập trắc nghiệm C++ - Cơ bản

Trang này tổng hợp 200 câu hỏi trắc nghiệm C++ cơ bản, sắp xếp theo chủ đề từ dễ đến khó. Mỗi câu có 4 đáp án A/B/C/D.

Chọn một đáp án cho mỗi câu - đáp án đúng/sai và phần giải thích sẽ tự động hiện ra ngay sau khi bạn chọn.


Câu 1. Trong C++, để khai báo một biến số nguyên x có giá trị 5, ta viết:

x = 5;

int x = 5;

var x = 5;

x := 5;


Câu 2. Kiểu dữ liệu nào dùng để lưu số thực có phần thập phân (độ chính xác đơn)?

int

float

char

bool


Câu 3. Kiểu dữ liệu nào dùng để lưu một ký tự đơn?

string

char

char*

text


Câu 4. Đoạn code sau in ra gì?

int x = 5;
double y = 2.0;
std::cout << x / y;

2

2.5

Lỗi biên dịch (Compile error)

2.0


Câu 5. Từ khoá nào dùng để khai báo một hằng số không thể thay đổi giá trị?

final

const

static

readonly


Câu 6. Mỗi câu lệnh trong C++ phải kết thúc bằng ký tự nào?

Dấu hai chấm :

Dấu chấm phẩy ;

Dấu phẩy ,

Không cần ký tự nào


Câu 7. Kiểu dữ liệu nào dùng để lưu giá trị đúng/sai?

int

char

bool

bit


Câu 8. Đoạn code sau in ra gì?

bool ok = true;
std::cout << ok;

true

1

TRUE

Lỗi biên dịch (Compile error)


Câu 9. Thư viện nào cần include để sử dụng kiểu std::string?

#include <iostream>

#include <string>

#include <cstring>

#include <vector>


Câu 10. Đoạn code sau in ra gì?

int x = 7;
x = "bảy";
std::cout << x;

bảy

7

Lỗi biên dịch (Compile error)

0


Câu 11. Đoạn code sau in ra gì?

int a = 10, b = 3;
std::cout << a / b;

3

3.33

3.0

1


Câu 12. Đoạn code sau in ra gì?

int a = 10, b = 3;
std::cout << a % b;

3

1

3.33

0


Câu 13. C++ có toán tử luỹ thừa riêng (giống ****** của Python) không?

Có, dùng ^

Có, dùng **

Không, phải dùng hàm pow() trong <cmath>

Có, dùng %%


Câu 14. Đoạn code sau in ra gì?

int a = 5;
a += 3;
std::cout << a;

5

3

8

53


Câu 15. Toán tử ++ dùng để làm gì?

Cộng hai số

Tăng giá trị biến lên 1

Nhân đôi giá trị biến

So sánh hai biến


Câu 16. Đoạn code sau in ra gì?

int x = 5;
std::cout << x++;
std::cout << x;

56

66

65

55


Câu 17. Đoạn code sau in ra gì?

int x = 5;
std::cout << ++x;
std::cout << x;

56

66

55

65


Câu 18. Đoạn code sau in ra gì?

std::cout << 3 + 4 * 2;

14

11

10

20


Câu 19. Hàm nào (thuộc <cmath>) dùng để tính căn bậc hai?

root()

sqrt()

sq()

square()


Câu 20. Đoạn code sau in ra gì?

int a = 7 / 2;
std::cout << a;

3.5

3

4

Lỗi biên dịch (Compile error)


Câu 21. Toán tử nào dùng để so sánh bằng nhau trong C++?

=

==

===

equals


Câu 22. Đoạn code sau in ra gì?

int x = 5;
if (x = 10) {
std::cout << "Vào if";
}

Không in gì vì x không bằng 10

Vào if (vì x = 10 gán giá trị 10, khác 0 nên coi là true)

Lỗi biên dịch (Compile error)

10


Câu 23. Đoạn code sau in ra gì?

bool a = (5 > 3) && (2 > 4);
std::cout << a;

1

0

Lỗi biên dịch (Compile error)

true


Câu 24. Đoạn code sau in ra gì?

bool a = (5 > 3) || (2 > 4);
std::cout << a;

1

0

true

Lỗi biên dịch (Compile error)


Câu 25. Toán tử nào dùng để phủ định một biểu thức logic?

!

not

~

-


Câu 26. Toán tử nào dùng để kiểm tra khác nhau giữa hai giá trị?

<>

!=

=!

~=


Câu 27. Đoạn code sau in ra gì?

int x = 7;
std::cout << (x >= 7 && x <= 10);

1

0

7

Lỗi biên dịch (Compile error)


Câu 28. Trong C++, giá trị nào của kiểu int được coi là false khi dùng trong điều kiện?

Số âm

Chỉ số 0

Số dương

Không có giá trị int nào là false


Câu 29. Đoạn code sau in ra gì?

std::cout << !(5 > 3);

1

0

true

Lỗi biên dịch (Compile error)


Câu 30. Đoạn code sau in ra gì?

int a = 5, b = 10;
std::cout << (a != b);

1

0

5

10


Câu 31. Đối tượng nào dùng để xuất dữ liệu ra màn hình trong C++?

std::print

std::cout

std::out

std::write


Câu 32. Đối tượng nào dùng để nhập dữ liệu từ bàn phím trong C++?

std::input

std::cin

std::read

std::scan


Câu 33. Đoạn code sau in ra gì?

std::cout << "Hello" << " " << "World";

HelloWorld

Hello World

Lỗi biên dịch (Compile error)

Hello


Câu 34. Để xuống dòng khi in ra màn hình, ta dùng cú pháp nào?

std::cout << “\n”; hoặc std::cout << std::endl;

std::cout << newline;

std::cout.break();

std::cout << “/n”;


Câu 35. Đoạn code sau in ra gì (người dùng nhập 10 khi chạy)?

int x;
std::cin >> x;
std::cout << x + 5;

10

15

x + 5

Lỗi biên dịch (Compile error)


Câu 36. Đoạn code sau in ra gì?

int a = 1, b = 2, c = 3;
std::cout << a << b << c;

1 2 3

123

6

Lỗi biên dịch (Compile error)


Câu 37. Thư viện nào cần include để dùng std::cin/std::cout?

#include <cstdio>

#include <iostream>

#include <stdlib.h>

#include <conio.h>


Câu 38. Đoạn code sau in ra gì (người dùng nhập 53)?

int a, b;
std::cin >> a >> b;
std::cout << a + b;

53

8

5 3

Lỗi biên dịch (Compile error)


Câu 39. Namespace std dùng để làm gì?

Chứa toàn bộ các thư viện của bên thứ ba

Không gian tên chứa các thành phần chuẩn của C++ (như cout, cin, string,…)

Chỉ dùng cho các dự án lớn

Là tên của một biến đặc biệt


Câu 40. Dòng using namespace std; có tác dụng gì?

Xoá namespace std

Cho phép dùng trực tiếp cout, cin,… mà không cần viết tiền tố std::

Tạo namespace mới tên std

Gây lỗi biên dịch


Câu 41. Cú pháp if nào sau đây đúng trong C++?

if x > 5: { }

if (x > 5) { }

if x > 5 then { }

if [x > 5] { }


Câu 42. Đoạn code sau in ra gì?

int x = 7;
if (x > 10) {
std::cout << "Lon";
} else if (x > 5) {
std::cout << "Trung binh";
} else {
std::cout << "Nho";
}

Lon

Trung binh

Nho

Không in gì


Câu 43. Toán tử ba ngôi (conditional operator) trong C++ có cú pháp như thế nào?

condition ? giá_trị_nếu_đúng : giá_trị_nếu_sai

giá_trị_nếu_đúng if condition else giá_trị_nếu_sai

if condition then giá_trị_nếu_đúng else giá_trị_nếu_sai

condition -> giá_trị_nếu_đúng, giá_trị_nếu_sai


Câu 44. Đoạn code sau in ra gì?

int x = 15;
std::string ketQua = (x % 2 == 0) ? "chan" : "le";
std::cout << ketQua;

chan

le

15

Lỗi biên dịch (Compile error)


Câu 45. Đoạn code sau in ra gì?

int x = 5;
if (x > 0) {
if (x > 10) {
std::cout << "A";
} else {
std::cout << "B";
}
} else {
std::cout << "C";
}

A

B

C

Không in gì


Câu 46. switch trong C++ dùng để thay thế cho cấu trúc nào khi cần so sánh một biến với nhiều giá trị cố định?

Vòng lặp for

Chuỗi các câu lệnh if - else if

Hàm đệ quy

Con trỏ


Câu 47. Từ khoá nào cần có ở cuối mỗi case trong switch để tránh “rơi” (fall-through) xuống case tiếp theo?

stop

break

end

exit


Câu 48. Đoạn code sau in ra gì?

int diem = 85;
if (diem >= 90) {
std::cout << "Gioi";
} else if (diem >= 80) {
std::cout << "Kha";
} else if (diem >= 65) {
std::cout << "Trung binh";
} else {
std::cout << "Yeu";
}

Gioi

Kha

Trung binh

Yeu


Câu 49. Nếu khối lệnh trong if chỉ có một câu lệnh duy nhất, có bắt buộc dùng dấu ngoặc nhọn {} không?

Bắt buộc luôn phải có

Không bắt buộc (nhưng nên dùng để code rõ ràng, tránh lỗi)

Chỉ khi dùng else

C++ không hỗ trợ if không có {}


Câu 50. Đoạn code sau in ra gì?

int x = 0;
if (x) {
std::cout << "True nhanh";
} else {
std::cout << "False nhanh";
}

True nhanh

False nhanh

0

Lỗi biên dịch (Compile error)


Câu 51. Cú pháp vòng lặp for cơ bản trong C++ gồm mấy phần, cách nhau bởi dấu gì?

2 phần, cách nhau bởi dấu phẩy

3 phần: khởi tạo, điều kiện, cập nhật - cách nhau bởi dấu chấm phẩy

4 phần, cách nhau bởi dấu hai chấm

Không có phần cố định


Câu 52. Đoạn code sau in ra gì?

for (int i = 0; i < 5; i++) {
std::cout << i << " ";
}

1 2 3 4 5

0 1 2 3 4

0 1 2 3 4 5

1 2 3 4


Câu 53. Đoạn code sau in ra gì?

for (int i = 2; i < 6; i++) {
std::cout << i << " ";
}

2 3 4 5

2 3 4 5 6

2 4

0 1 2 3 4 5


Câu 54. Đoạn code sau in ra gì?

for (int i = 0; i < 10; i += 2) {
std::cout << i << " ";
}

0 1 2 3 4 5 6 7 8 9

0 2 4 6 8

2 4 6 8 10

1 3 5 7 9


Câu 55. Đoạn code sau in ra tổng bằng bao nhiêu?

int tong = 0;
for (int i = 1; i < 5; i++) {
tong += i;
}
std::cout << tong;

10

6

15

4


Câu 56. Từ khoá nào dùng để thoát khỏi vòng lặp for trước khi nó kết thúc tự nhiên?

stop

exit

break

return


Câu 57. Từ khoá nào dùng để bỏ qua phần còn lại của lần lặp hiện tại và chuyển sang lần lặp kế tiếp?

skip

continue

pass

next


Câu 58. Đoạn code sau in ra gì?

for (int i = 0; i < 5; i++) {
if (i == 3) break;
std::cout << i << " ";
}

0 1 2

0 1 2 3

0 1 2 3 4

3


Câu 59. Đoạn code sau in ra gì?

for (int i = 0; i < 5; i++) {
if (i == 2) continue;
std::cout << i << " ";
}

0 1 3 4

0 1 2 3 4

0 1

2


Câu 60. Vòng lặp for (int i = 5; i > 0; i–) in ra dãy số nào?

1 2 3 4 5

5 4 3 2 1

0 1 2 3 4 5

5 4 3 2 1 0


Câu 61. Đoạn code sau in ra gì?

int i = 0;
while (i < 3) {
std::cout << i << " ";
i++;
}

0 1 2

0 1 2 3

1 2 3

Lặp vô hạn


Câu 62. Sự khác biệt chính giữa whiledo-while là gì?

while kiểm tra điều kiện trước, do-while chạy ít nhất một lần rồi mới kiểm tra điều kiện

do-while không cần điều kiện

while chỉ chạy đúng một lần

Không có sự khác biệt


Câu 63. Đoạn code sau in ra gì?

int i = 10;
do {
std::cout << i << " ";
} while (i < 5);

10

Không in gì

Lặp vô hạn

Lỗi biên dịch (Compile error)


Câu 64. Đoạn code nào sau đây gây ra lặp vô hạn?

int i = 0;
while (i < 5) {
std::cout << i;
i++;
}
int i = 0;
while (i < 5) {
std::cout << i;
}
for (int i = 0; i < 5; i++) {
std::cout << i;
}
int i = 5;
while (i > 0) {
std::cout << i;
i--;
}

Câu 65. Đoạn code sau in ra tổng bao nhiêu?

int tong = 0, i = 1;
while (i <= 5) {
tong += i;
i++;
}
std::cout << tong;

10

15

5

20


Câu 66. while (true) { ... } kết hợp với lệnh nào để dừng lại khi cần?

stop

break

exit

end


Câu 67. Đoạn code sau in ra gì?

int i = 10;
while (i > 0) {
if (i == 5) break;
std::cout << i << " ";
i--;
}

10 9 8 7 6

10 9 8 7 6 5

9 8 7 6

Lặp vô hạn


Câu 68. Đoạn code sau in ra gì?

int dem = 0;
while (dem < 3) {
dem++;
}
std::cout << dem;

0

2

3

4


Câu 69. do-while khác forwhile ở điểm nào về cú pháp?

Điều kiện được kiểm tra ở cuối vòng lặp, sau từ khoá while, và kết thúc bằng dấu ;

Không cần điều kiện

Không thể dùng break

Chỉ chạy được đúng 1 lần


Câu 70. Đoạn code sau in ra gì?

int i = 0;
do {
std::cout << i << " ";
i++;
} while (i < 3);

0 1 2

0 1 2 3

1 2 3

Không in gì


Câu 71. Cú pháp nào dùng để khai báo một mảng gồm 5 số nguyên?

int arr[5];

array int arr(5);

int[5] arr;

int arr = new[5];


Câu 72. Đoạn code sau in ra gì?

int arr[3] = {10, 20, 30};
std::cout << arr[0];

10

20

30

Lỗi biên dịch (Compile error)


Câu 73. Đoạn code sau in ra gì?

int arr[5] = {1, 2, 3, 4, 5};
std::cout << arr[4];

4

5

Lỗi biên dịch (Compile error)

0


Câu 74. Đoạn code sau in ra gì?

int arr[3] = {1, 2, 3};
std::cout << arr[3];

0

Lỗi biên dịch (Compile error)

Giá trị không xác định (truy cập ngoài phạm vi mảng)

3


Câu 75. Hàm/thao tác nào dùng để lấy số phần tử của một mảng tĩnh khai báo kiểu int arr[10]?

arr.length()

arr.size()

sizeof(arr) / sizeof(arr[0])

len(arr)


Câu 76. Đoạn code sau in ra gì?

int arr[3] = {1, 2, 3};
for (int i = 0; i < 3; i++) {
std::cout << arr[i] << " ";
}

1 2 3

0 1 2

3 2 1

Lỗi biên dịch (Compile error)


Câu 77. std::vector<int> khác int arr[] (mảng C-style) ở điểm nào?

vector có kích thước cố định, không thay đổi được

vector có thể thay đổi kích thước linh hoạt khi chạy chương trình

vector chỉ chứa được kiểu int

Không có sự khác biệt


Câu 78. Đoạn code sau in ra gì?

#include <vector>
std::vector<int> v = {1, 2, 3};
v.push_back(4);
std::cout << v.size();

3

4

5

Lỗi biên dịch (Compile error)


Câu 79. Mảng 2 chiều int arr[3][4] có bao nhiêu phần tử tất cả?

3

4

7

12


Câu 80. Đoạn code sau in ra gì?

int arr[5] = {1, 2, 3};
std::cout << arr[4];

3

0

Giá trị không xác định

Lỗi biên dịch (Compile error)


Câu 81. Đoạn code sau in ra gì?

#include <string>
std::string s = "Xin chao";
std::cout << s.length();

7

8

9

Lỗi biên dịch (Compile error)


Câu 82. Đoạn code sau in ra gì?

std::string s = "Cpp";
std::cout << s[0];

C

p

Cpp

Lỗi biên dịch (Compile error)


Câu 83. Toán tử + giữa hai std::string thực hiện thao tác gì?

Cộng độ dài hai chuỗi

Nối (concatenate) hai chuỗi lại với nhau

So sánh hai chuỗi

Gây lỗi biên dịch


Câu 84. Đoạn code sau in ra gì?

std::string a = "Xin";
std::string b = "chao";
std::cout << a + " " + b;

Xinchao

Xin chao

Lỗi biên dịch (Compile error)

Xin + chao


Câu 85. Đoạn code sau in ra gì?

std::string s = "Hello";
for (char c : s) {
std::cout << c;
}

Hello

olleH

H

Lỗi biên dịch (Compile error)


Câu 86. Thư viện <cstring> cung cấp các hàm xử lý cho kiểu chuỗi nào?

std::string

Chuỗi kiểu C-style (char[], kết thúc bằng ‘\0’)

std::vector<char>

Không dùng để xử lý chuỗi


Câu 87. Đoạn code sau in ra gì?

std::string s = "Hello World";
std::cout << s.substr(0, 5);

Hello

World

Hello (có khoảng trắng)

Lỗi biên dịch (Compile error)


Câu 88. Đoạn code sau in ra gì?

std::string s = "abc";
s[0] = 'z';
std::cout << s;

abc

zbc

Lỗi biên dịch (Compile error)

z


Câu 89. Hàm nào dùng để so sánh hai chuỗi std::string (trả về 0 nếu bằng nhau)?

s1.equals(s2)

s1.compare(s2)

s1.match(s2)

s1.diff(s2)


Câu 90. Đoạn code sau in ra gì?

std::string s = "Xin chao";
s += "!";
std::cout << s;

Xin chao

Xin chao!

Lỗi biên dịch (Compile error)

!Xin chao


Câu 91. Cú pháp khai báo một hàm trong C++ cần có những thành phần nào?

Chỉ cần tên hàm

Kiểu dữ liệu trả về, tên hàm, danh sách tham số (nếu có)

Chỉ cần danh sách tham số

Từ khoá function và tên hàm


Câu 92. Đoạn code sau in ra gì?

int cong(int a, int b) {
return a + b;
}
int main() {
std::cout << cong(3, 4);
return 0;
}

34

7

0

Lỗi biên dịch (Compile error)


Câu 93. Hàm không trả về giá trị nào (không có return giá trị) cần khai báo kiểu trả về là gì?

int

null

void

none


Câu 94. Hàm nào bắt buộc phải có trong mọi chương trình C++ (chương trình bắt đầu chạy từ đây)?

start()

main()

run()

begin()


Câu 95. Đoạn code sau in ra gì?

void chao(std::string ten = "ban") {
std::cout << "Xin chao, " << ten << "!";
}
int main() {
chao();
return 0;
}

Xin chao, ban!

Xin chao, !

Lỗi biên dịch (Compile error) vì thiếu tham số

Xin chao, ten!


Câu 96. Đoạn code sau in ra gì?

int nhan(int a, int b) {
int ketQua = a * b;
return ketQua;
}
int main() {
int x = nhan(2, 5);
std::cout << x;
return 0;
}

10

7

25

0


Câu 97. Biến khai báo bên trong một hàm (local variable) có thể được truy cập từ hàm khác không?

Có, mọi hàm đều truy cập được

Không, biến cục bộ chỉ tồn tại và truy cập được trong phạm vi hàm khai báo nó

Chỉ hàm main() mới truy cập được

Chỉ khi khai báo là static


Câu 98. Đoạn code sau in ra gì?

std::string kiemTraChanLe(int n) {
if (n % 2 == 0) {
return "chan";
} else {
return "le";
}
}
int main() {
std::cout << kiemTraChanLe(7);
return 0;
}

chan

le

7

Lỗi biên dịch (Compile error)


Câu 99. Để truyền tham số vào hàm sao cho hàm có thể thay đổi trực tiếp giá trị biến gốc ở nơi gọi, nên dùng cách truyền tham số nào?

Truyền theo giá trị (pass by value)

Truyền theo tham chiếu (pass by reference, dùng &)

Không thể làm được trong C++

Truyền theo con trỏ tên biến (không dùng & hay *)


Câu 100. Đoạn code sau in ra gì?

void tang(int &x) {
x = x + 1;
}
int main() {
int a = 5;
tang(a);
std::cout << a;
return 0;
}

5

6

Lỗi biên dịch (Compile error)

0



Nhóm 11: Toán tử gán, tăng/giảm và toán tử ba ngôi

Phần tiêu đề “Nhóm 11: Toán tử gán, tăng/giảm và toán tử ba ngôi”

Câu 101. Đoạn code sau in ra gì?

int x = 5;
x += 3;
std::cout << x;

5

8

3

Lỗi biên dịch


Câu 102. Đoạn code sau in ra gì?

int x = 10;
x -= 4;
std::cout << x;

10

4

6

14


Câu 103. Đoạn code sau in ra gì?

int x = 2;
x *= 5;
std::cout << x;

2

5

7

10


Câu 104. Đoạn code sau in ra gì?

int x = 20;
x /= 4;
std::cout << x;

5

4

16

20


Câu 105. Đoạn code sau in ra gì?

int x = 7;
x %= 3;
std::cout << x;

3

1

2

7


Câu 106. Đoạn code sau in ra gì?

int a = 5;
int b = a++;
std::cout << a << " " << b;

5 5

5 6

6 5

6 6


Câu 107. Đoạn code sau in ra gì?

int a = 5;
int b = ++a;
std::cout << a << " " << b;

5 5

5 6

6 5

6 6


Câu 108. Đoạn code sau in ra gì?

int x = 5;
std::cout << (x > 3 ? "Lon" : "Nho");

Lon

Nho

true

Lỗi biên dịch


Câu 109. Đoạn code sau in ra gì?

int a = 5, b = 10;
int max = (a > b) ? a : b;
std::cout << max;

5

10

15

0


Câu 110. Đoạn code sau in ra gì?

int x = 5;
x++;
++x;
std::cout << x;

5

6

7

8


Câu 111. Từ khóa nào dùng để khai báo một hằng số (giá trị không thể thay đổi) trong C++?

const

final

constant

readonly


Câu 112. Đoạn code sau in ra gì?

double d = 9.7;
int x = (int)d;
std::cout << x;

10

9

9.7

Lỗi biên dịch


Câu 113. Đoạn code sau in ra gì?

int a = 7, b = 2;
double x = (double)a / b;
std::cout << x;

3

3.0

4

3.5


Câu 114. Đoạn code sau xảy ra điều gì?

const int X = 10;
X = 20;
std::cout << X;

In ra 20

In ra 10

Lỗi biên dịch

In ra 0


Câu 115. Đoạn code sau in ra gì?

int x = 65;
char c = (char)x;
std::cout << c;

65

A

a

Lỗi biên dịch


Câu 116. Đoạn code sau in ra gì?

char c = 'A';
int x = (int)c;
std::cout << x;

65

A

1

0


Câu 117. Đoạn code sau in ra gì?

double x = static_cast<double>(7) / 2;
std::cout << x;

3

4

3.5

Lỗi biên dịch


Câu 118. Đoạn code sau in ra gì?

bool b = (bool)5;
std::cout << b;

5

1

0

true


Câu 119. Đoạn code sau in ra gì?

int x = 3.99;
std::cout << x;

3

4

3.99

Lỗi biên dịch


Câu 120. Trong C++, phép ép kiểu tường minh (explicit casting) có thể được viết dưới dạng nào?

(kieu)bieu_thuc — ép kiểu kiểu C

kieu(bieu_thuc) — ép kiểu kiểu hàm

static_cast<kieu>(bieu_thuc)

Cả A, B và C đều đúng


Câu 121. Từ khóa nào cần dùng trong mỗi case để tránh chương trình “rơi” (fall-through) xuống case tiếp theo?

break

continue

return

stop


Câu 122. Đoạn code sau in ra gì?

int x = 2;
switch (x) {
case 1: std::cout << "Mot"; break;
case 2: std::cout << "Hai"; break;
default: std::cout << "Khac";
}

Mot

Khac

Hai

Không in gì


Câu 123. Đoạn code sau in ra gì?

int x = 5;
switch (x) {
case 1: std::cout << "A";
case 2: std::cout << "B";
default: std::cout << "C";
}

ABC

C

Không in gì

Lỗi biên dịch


Câu 124. Đoạn code sau in ra gì?

int x = 1;
switch (x) {
case 1: std::cout << "A";
case 2: std::cout << "B"; break;
case 3: std::cout << "C";
}

A

ABC

B

AB


Câu 125. switch trong C++ có thể dùng với kiểu dữ liệu nào?

Số nguyên (int) hoặc ký tự (char)

Số thực (double, float)

Chuỗi (string)

Tất cả các kiểu trên


Câu 126. Nếu switch không có default và giá trị không khớp case nào, điều gì xảy ra?

Lỗi biên dịch

Không có khối lệnh nào được thực thi, chương trình chạy tiếp bình thường

Chương trình dừng đột ngột

In ra 0


Câu 127. Đoạn code sau in ra gì?

char c = 'b';
switch (c) {
case 'a': std::cout << "A"; break;
case 'b': std::cout << "B"; break;
default: std::cout << "?";
}

A

?

B

b


Câu 128. Khác với if-else, switch-case chỉ so sánh giá trị theo kiểu nào?

So sánh bằng (==) với từng hằng số cụ thể

So sánh khoảng giá trị (ví dụ x > 5 và x < 10)

So sánh chuỗi ký tự

So sánh kiểu bool


Câu 129. Đoạn code sau in ra gì?

int diem = 8;
switch (diem / 2) {
case 5:
case 4: std::cout << "Gioi"; break;
case 3: std::cout << "Kha"; break;
default: std::cout << "TB";
}

TB

Kha

Lỗi biên dịch

Gioi


Câu 130. Từ khóa nào dùng để chỉ định nhánh xử lý mặc định khi không có case nào khớp?

else

default

otherwise

case 0


Câu 131. Biến khai báo bên trong một hàm được gọi là gì?

Biến toàn cục (global)

Biến cục bộ (local)

Biến hằng

Biến con trỏ


Câu 132. Đoạn code sau in ra gì?

int x = 10;
void f() {
int x = 20;
std::cout << x;
}
int main() {
f();
return 0;
}

20

10

Lỗi biên dịch

0


Câu 133. Đoạn code sau in ra gì?

int x = 10;
void f() {
std::cout << x;
}
int main() {
f();
return 0;
}

0

Lỗi biên dịch

10

Không xác định


Câu 134. Biến khai báo trong khối {} của một vòng lặp for chỉ tồn tại ở đâu?

Trong toàn bộ chương trình

Trong toàn bộ hàm chứa vòng lặp đó

Không tồn tại được

Chỉ trong khối lệnh của vòng lặp đó


Câu 135. Từ khóa static khi dùng cho một biến cục bộ trong hàm có tác dụng gì?

Biến bị xóa sau mỗi lần gọi hàm

Biến giữ nguyên giá trị giữa các lần gọi hàm

Biến trở thành hằng số, không thể thay đổi

Biến trở thành biến toàn cục, truy cập được từ mọi hàm


Câu 136. Đoạn code sau in ra gì?

void dem() {
static int count = 0;
count++;
std::cout << count << " ";
}
int main() {
dem();
dem();
dem();
return 0;
}

1 2 3

1 1 1

0 1 2

3 3 3


Câu 137. Đoạn code sau in ra gì?

void dem() {
int count = 0;
count++;
std::cout << count << " ";
}
int main() {
dem();
dem();
dem();
return 0;
}

1 2 3

3 3 3

1 1 1

0 0 0


Câu 138. Biến toàn cục (global) thường được khai báo ở đâu?

Bên trong hàm main

Bên ngoài tất cả các hàm

Bên trong vòng lặp

Chỉ trong khối switch


Câu 139. Đoạn code sau xảy ra điều gì?

int main() {
{ int x = 5; std::cout << x; }
std::cout << x;
return 0;
}

In ra 5 rồi 5

In ra 5 rồi 0

Lỗi biên dịch

Lỗi thời gian chạy


Câu 140. Ưu điểm của việc giới hạn phạm vi (scope) của biến càng nhỏ càng tốt là gì?

Chương trình luôn chạy nhanh hơn

Biến sẽ tự động trở thành hằng số

Không có ưu điểm gì đáng kể

Giảm khả năng xung đột tên biến và dễ đọc, dễ bảo trì code hơn


Câu 141. Cú pháp nào khai báo đúng một mảng hai chiều int gồm 3 hàng, 4 cột?

int a[3, 4];

int a[3][4];

int a(3, 4);

int a4;


Câu 142. Đoạn code sau in ra gì?

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
std::cout << a[1][2];

3

5

6

4


Câu 143. Đoạn code sau in ra gì?

int a[2][2] = {{1, 2}, {3, 4}};
std::cout << a[0][1];

2

1

3

4


Câu 144. Mảng int a[3][4]; có tổng cộng bao nhiêu phần tử?

3

4

7

12


Câu 145. Đoạn code sau in ra gì?

int a[2][2] = {{1, 2}, {3, 4}};
int sum = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
sum += a[i][j];
std::cout << sum;

4

10

6

24


Câu 146. Chỉ số hàng và cột của mảng trong C++ bắt đầu từ số nào?

0

1

-1

Tùy người lập trình chọn


Câu 147. Đoạn code sau in ra gì?

int a[3][3] = {0};
std::cout << a[2][2];

3

9

0

Giá trị rác (không xác định)


Câu 148. Với mảng int a[3][3];, việc truy cập a[3][0] gây ra điều gì?

Lỗi biên dịch

Truy cập ngoài phạm vi mảng (out of bounds), hành vi không xác định

Mảng tự động mở rộng thêm một hàng

Luôn in ra 0


Câu 149. Đoạn code sau in ra gì?

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++)
std::cout << a[i][j] << " ";
}

1 4 2 5 3 6

6 5 4 3 2 1

1 2 3

1 2 3 4 5 6


Câu 150. Mảng hai chiều thường được dùng để biểu diễn cấu trúc dữ liệu nào?

Danh sách liên kết (linked list)

Ma trận (matrix)

Cây nhị phân (binary tree)

Hàng đợi (queue)


Câu 151. Toán tử nào dùng để lấy địa chỉ của một biến?

&

@


Câu 152. Toán tử nào dùng để truy cập giá trị mà con trỏ đang trỏ tới (dereference)?

&

->

::


Câu 153. Đoạn code sau in ra gì?

int x = 10;
int *p = &x;
std::cout << *p;

Địa chỉ của x

0

Lỗi biên dịch

10


Câu 154. Đoạn code sau in ra gì?

int x = 10;
int *p = &x;
*p = 20;
std::cout << x;

10

20

Lỗi biên dịch

Không xác định


Câu 155. Một con trỏ chưa trỏ tới biến cụ thể nào nên được khởi tạo bằng giá trị nào để an toàn?

-1

“” (chuỗi rỗng)

nullptr

Không cần khởi tạo


Câu 156. Trên hệ thống 64-bit phổ biến, kích thước (sizeof) của một con trỏ thường là bao nhiêu byte?

2

4

8

Phụ thuộc kiểu dữ liệu mà nó trỏ tới


Câu 157. Đoạn code sau in ra gì?

int a = 1, b = 2;
int *p = &a;
p = &b;
std::cout << *p;

2

1

Lỗi biên dịch

3


Câu 158. Cú pháp nào khai báo đúng một con trỏ trỏ tới kiểu int?

int p*;

ptr int p;

int p&;

int *p;


Câu 159. Đoạn code sau in ra gì?

int x = 5;
int *p = &x;
(*p)++;
std::cout << x;

5

6

Lỗi biên dịch

Địa chỉ của x


Câu 160. Con trỏ (pointer) trong C++ dùng để lưu trữ gì?

Giá trị trực tiếp của biến

Địa chỉ bộ nhớ của một biến

Tên của biến dưới dạng chuỗi

Kiểu dữ liệu của biến


Câu 161. Từ khóa nào dùng để định nghĩa một kiểu dữ liệu struct trong C++?

struct

class

group

record


Câu 162. Đoạn code sau in ra gì?

struct SinhVien {
std::string ten;
int tuoi;
};
int main() {
SinhVien sv;
sv.ten = "An";
sv.tuoi = 20;
std::cout << sv.ten;
return 0;
}

20

SinhVien

An

Lỗi biên dịch


Câu 163. Toán tử nào dùng để truy cập thành viên (field) của một biến struct?

::

. (dấu chấm)

&


Câu 164. Đoạn code sau in ra gì?

struct Diem {
int x;
int y;
};
int main() {
Diem d = {3, 4};
std::cout << d.x + d.y;
return 0;
}

3

4

34

7


Câu 165. struct trong C++ thường được dùng để làm gì?

Nhóm nhiều biến (có thể khác kiểu) thành một kiểu dữ liệu mới

Chỉ để lưu trữ đúng một biến duy nhất

Thay thế hoàn toàn cho vòng lặp

Chỉ dùng để định nghĩa hàm


Câu 166. Đoạn code sau in ra gì?

struct Diem { int x, y; };
int main() {
Diem a = {1, 2};
Diem b = a;
b.x = 100;
std::cout << a.x << " " << b.x;
return 0;
}

100 100

1 100

1 1

Lỗi biên dịch


Câu 167. Có thể khai báo một mảng gồm nhiều biến struct trong C++ không?

Có, giống như mảng của bất kỳ kiểu dữ liệu nào khác

Không, struct không thể dùng trong mảng

Chỉ được nếu struct rỗng

Chỉ được khi dùng con trỏ


Câu 168. Đoạn code sau in ra gì?

struct HinhChuNhat {
int rong, cao;
};
int dienTich(HinhChuNhat h) {
return h.rong * h.cao;
}
int main() {
HinhChuNhat hcn = {5, 3};
std::cout << dienTich(hcn);
return 0;
}

8

5

15

Lỗi biên dịch


Câu 169. Truy cập thành viên của struct thông qua con trỏ trỏ tới struct đó dùng toán tử nào?

. (dấu chấm)

-> (mũi tên)

&


Câu 170. Đoạn code sau in ra gì?

struct Diem { int x, y; };
int main() {
Diem ds[2] = {{1, 2}, {3, 4}};
std::cout << ds[1].y;
return 0;
}

1

2

3

4


Câu 171. Đệ quy (recursion) là gì?

Một vòng lặp for lồng nhau nhiều cấp

Một hàm gọi lại chính nó

Một biến static đặc biệt

Một loại mảng nhiều chiều


Câu 172. Thành phần bắt buộc để một hàm đệ quy không chạy vô hạn là gì?

Một vòng lặp while bên trong

Một biến toàn cục

Điều kiện dừng (base case)

Một con trỏ


Câu 173. Đoạn code sau in ra gì?

int giaithua(int n) {
if (n <= 1) return 1;
return n * giaithua(n - 1);
}
int main() {
std::cout << giaithua(4);
return 0;
}

4

10

12

24


Câu 174. Đoạn code sau in ra gì?

int fib(int n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}
int main() {
std::cout << fib(5);
return 0;
}

5

8

3

13


Câu 175. Hàm đệ quy không có điều kiện dừng sẽ gây ra lỗi gì khi chạy chương trình?

Lỗi biên dịch

Tràn ngăn xếp (stack overflow)

In ra 0 và kết thúc bình thường

Không có lỗi gì xảy ra


Câu 176. Đoạn code sau in ra gì?

void dem(int n) {
if (n == 0) return;
std::cout << n << " ";
dem(n - 1);
}
int main() {
dem(3);
return 0;
}

0 1 2

1 2 3

3 2 1

3 2 1 0


Câu 177. Đoạn code sau in ra gì?

int tong(int n) {
if (n == 0) return 0;
return n + tong(n - 1);
}
int main() {
std::cout << tong(5);
return 0;
}

15

5

10

25


Câu 178. So với dùng vòng lặp, đệ quy thường tiêu tốn nhiều hơn tài nguyên nào?

Dung lượng ổ đĩa

Bộ nhớ ngăn xếp (stack memory)

Băng thông mạng

Không tiêu tốn thêm gì cả


Câu 179. Đoạn code sau in ra gì?

void dem(int n) {
if (n > 3) return;
std::cout << n << " ";
dem(n + 1);
}
int main() {
dem(1);
return 0;
}

3 2 1

1 2 3 4

0 1 2 3

1 2 3


Câu 180. Mỗi lần gọi hàm đệ quy, C++ lưu trữ thông tin của lời gọi hàm ở đâu?

Heap

Ổ cứng

Ngăn xếp gọi hàm (call stack)

Thanh ghi CPU


Nhóm 19: Vector cơ bản (thư viện chuẩn STL)

Phần tiêu đề “Nhóm 19: Vector cơ bản (thư viện chuẩn STL)”

Câu 181. Để sử dụng vector trong C++, cần include thư viện nào?

<array>

<vector>

<list>

<iostream>


Câu 182. Cú pháp nào khai báo đúng một vector chứa các số nguyên tên là v?

vector v<int>;

int vector v;

v<int> vector;

vector<int> v;


Câu 183. Hàm thành viên nào dùng để thêm một phần tử vào cuối vector?

push_back()

add()

append()

insert_end()


Câu 184. Đoạn code sau in ra gì?

vector<int> v = {1, 2, 3};
v.push_back(4);
std::cout << v.size();

3

10

4

Lỗi biên dịch


Câu 185. Đoạn code sau in ra gì?

vector<int> v = {10, 20, 30};
std::cout << v[1];

10

20

30

1


Câu 186. Hàm thành viên nào trả về số lượng phần tử hiện có trong vector?

length()

count()

capacity()

size()


Câu 187. So với mảng thông thường (array), ưu điểm nổi bật của vector là gì?

Luôn có kích thước cố định, không thể thay đổi

Có thể thay đổi kích thước linh hoạt trong lúc chương trình chạy

Không thể duyệt bằng vòng lặp

Chỉ có thể lưu trữ kiểu int


Câu 188. Đoạn code sau in ra gì?

vector<int> v = {1, 2, 3, 4};
int sum = 0;
for (int x : v) sum += x;
std::cout << sum;

10

4

1234

Lỗi biên dịch


Câu 189. Hàm thành viên nào dùng để kiểm tra vector có rỗng hay không?

size()

clear()

empty()

length()


Câu 190. Đoạn code sau in ra gì?

vector<int> v;
std::cout << v.empty();

false

0

Lỗi biên dịch

1


Câu 191. Đoạn code sau in ra gì?

int main() {
int x;
std::cout << x;
return 0;
}

0

Giá trị rác, không xác định

Lỗi biên dịch

1


Câu 192. Đoạn code sau xảy ra điều gì?

int a = 5;
int b = 0;
std::cout << a / b;

In ra 5

In ra 0

Lỗi thời gian chạy (chia cho 0 với số nguyên)

In ra vô cực (infinity)


Câu 193. Lỗi nào xảy ra khi thiếu dấu ; ở cuối một câu lệnh trong C++?

Lỗi thời gian chạy (runtime error)

Lỗi biên dịch (compile error)

Không có lỗi gì cả

Chỉ là một cảnh báo (warning) nhẹ


Câu 194. Đoạn code sau có vấn đề gì?

for (int i = 0; i < 5; i++);
{
std::cout << i;
}

Lỗi biên dịch, vì dấu ; thừa sau for khiến vòng lặp rỗng và i không còn tồn tại ở khối bên dưới

In ra 0 1 2 3 4

In ra 5

Chạy đúng như mong đợi, không có lỗi


Câu 195. Đoạn code sau in ra gì?

int a = 10;
if (a = 5) {
std::cout << "Bang 5";
} else {
std::cout << "Khac 5";
}

Khac 5

Lỗi biên dịch

Lỗi thời gian chạy

Bang 5


Câu 196. Đoạn code sau xảy ra điều gì?

int arr[5] = {1, 2, 3, 4, 5};
std::cout << arr[5];

In ra 0

In ra 5

Lỗi biên dịch

Truy cập ngoài phạm vi mảng, hành vi không xác định


Câu 197. Đoạn code sau in ra gì?

double x = 10 / 3;
std::cout << x;

3

3.33333

3.0

Lỗi biên dịch


Câu 198. Đoạn code sau in ra gì?

double x = 10.0 / 3;
std::cout << x;

3

3.0

3.33333

Lỗi biên dịch


Câu 199. So sánh trực tiếp hai số thực (float/double) bằng toán tử == có rủi ro gì?

Không có rủi ro gì, luôn chính xác tuyệt đối

Sai số làm tròn có thể khiến hai giá trị “gần bằng nhau” bị coi là khác nhau

Luôn gây lỗi biên dịch

Luôn trả về false bất kể giá trị nào


Câu 200. Việc viết chú thích (comment) bằng // hoặc /* */ có tác dụng gì đối với chương trình khi biên dịch?

Làm chương trình chạy nhanh hơn

Trình biên dịch bỏ qua hoàn toàn, không ảnh hưởng đến logic chạy của chương trình

Làm chương trình chạy chậm hơn

Luôn gây lỗi biên dịch nếu dùng sai cú pháp