wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

CTDL&TG_Buoi1

Total questions: 100

Worksheet time: 1hrs 16mins

Name
Class
Date
1.
Đâu là cách khai báo một biến số nguyên hợp lệ trong C++?
a)
integer x;
b)
int x;
c)
x : int;
d)
declare x as int;
2.
Kết quả của đoạn code sau là gì: `int x = 5; int y = 2; cout << x / y;`
a)
2.5
b)
2
c)
3
d)
Lỗi biên dịch
3.
Toán tử nào được sử dụng để truy cập địa chỉ của một biến?
a)
*
b)
&
c)
@
d)
#
4.
Dòng nào sau đây sẽ in ra "Hello, World!" và xuống dòng mới?
a)
cout << "Hello, World!" << endl;
b)
cout << "Hello, World!";
c)
printf("Hello, World!\n");
d)
System.out.println("Hello, World!");
5.
Kiểu dữ liệu nào phù hợp nhất để lưu trữ giá trị `true` hoặc `false`?
a)
int
b)
char
c)
string
d)
bool
6.
Vòng lặp nào trong C++ sẽ thực thi khối lệnh ít nhất một lần?
a)
for
b)
while
c)
do-while
d)
if
7.
Làm thế nào để viết một dòng chú thích trong C++?
a)
// Chú thích
b)
/* Chú thích */
c)
# Chú thích
8.
Đâu là toán tử so sánh "không bằng"?
a)
<>
b)
!=
c)
!==
d)
==!
9.
Hàm `main()` trong C++ trả về giá trị kiểu gì theo mặc định?
a)
void
b)
string
c)
bool
d)
int
10.
Kết quả của `5 % 2` là gì?
a)
2.5
b)
2
c)
1
d)
0
11.
Lệnh nào dùng để dừng vòng lặp hiện tại và chuyển sang lần lặp tiếp theo?
a)
break
b)
exit
c)
continue
d)
return
12.
Đoạn code sau in ra gì: `for(int i = 0; i < 3; i++) { cout << i; }`
a)
12
b)
123
c)
123
d)
Lỗi
13.
Trong cấu trúc `if-else`, khối lệnh `else` sẽ thực thi khi nào?
a)
Khi điều kiện của `if` đúng
b)
Khi điều kiện của `if` sai
c)
Luôn luôn thực thi
d)
Không bao giờ thực thi
14.
Để sử dụng `cin` và `cout`, bạn cần `#include` thư viện nào?
a)
<cstdlib>
b)
<string>
c)
<iostream>
d)
<math.h>
15.
Một mảng `int arr[5];` có thể chứa bao nhiêu phần tử?
a)
4
b)
5
c)
6
d)
Không giới hạn
16.
Phần tử đầu tiên của một mảng có chỉ số (index) là bao nhiêu?
a)
1
b)
0
c)
-1
d)
Tùy thuộc vào khai báo
17.
Kết quả của biểu thức `(true && false)` là gì?
a)
true
b)
false
c)
1
d)
0
18.
Lệnh `break;` được dùng để làm gì?
a)
Thoát khỏi chương trình
b)
Thoát khỏi vòng lặp hoặc khối switch
c)
Bỏ qua lần lặp hiện tại
d)
Trả về giá trị từ hàm
19.
Từ khóa nào được dùng để định nghĩa một hằng số không thể thay đổi giá trị?
a)
const
b)
static
c)
final
d)
define
20.
Đoạn code sau sẽ in ra gì: `int a = 10; if (a = 5) { cout << "Hello"; }`
a)
Hello
b)
Không in ra gì
c)
Lỗi biên dịch
d)
Cảnh báo và in "Hello"
21.
Đâu là cách khai báo một hàm tên `myFunction` không trả về giá trị và không có tham số?
a)
function myFunction() {}
b)
myFunction() {}
c)
void myFunction() {}
d)
int myFunction() {}
22.
Toán tử `++` được gọi là gì?
a)
Toán tử cộng
b)
Toán tử gán
c)
Toán tử tăng
d)
Toán tử con trỏ
23.
Làm thế nào để khai báo một con trỏ tới một số nguyên?
a)
`ptr int;`
b)
`int ptr;`
c)
`int *ptr;`
d)
`*int ptr;`
24.
Giá trị nào sau đây không được coi là `false` trong C++?
a)
0
b)
NULL
c)
-1
d)
false
25.
Mục đích của từ khóa `return` trong một hàm là gì?
a)
Kết thúc hàm và trả về một giá trị
b)
In một giá trị ra màn hình
c)
Bắt đầu một hàm
d)
Chỉ để kết thúc chương trình
26.
`std::string` là một...
a)
Kiểu dữ liệu cơ bản
b)
Lớp (Class)
c)
Hàm
d)
Biến
27.
Kết quả của `cout << (5 > 3 ? "Yes" : "No");` là gì?
a)
Yes
b)
No
c)
Lỗi biên dịch
d)
1
28.
Cấu trúc điều khiển nào phù hợp nhất để xử lý nhiều trường hợp giá trị của một biến duy nhất?
a)
if-else if-else
b)
switch-case
c)
for
d)
while
29.
Toán tử `->` được sử dụng để làm gì?
a)
Truy cập thành viên của một đối tượng thông qua con trỏ
b)
So sánh hai con trỏ
c)
Khai báo một con trỏ
d)
Phép gán
30.
Đoạn code sau in ra gì: `int x = 0; cout << x++;`
a)
0
b)
1
c)
Lỗi
d)
-1
31.
Làm thế nào để đọc một chuỗi có khoảng trắng từ người dùng?
a)
`cin >> myString;`
b)
`getline(cin, myString);`
c)
`cin.get(myString);`
d)
Không thể đọc chuỗi có khoảng trắng
32.
Đâu không phải là một kiểu dữ liệu cơ bản trong C++?
a)
float
b)
char
c)
array
d)
double
33.
Một hàm có thể trả về bao nhiêu giá trị?
a)
Không giới hạn
b)
Chỉ một
c)
Hai
d)
Tối đa bằng số lượng tham số
34.
Từ khóa `new` được dùng để làm gì?
a)
Tạo một file mới
b)
Cấp phát bộ nhớ động
c)
Khai báo một biến mới
d)
Bắt đầu một vòng lặp mới
35.
Đâu là một ví dụ về ép kiểu tường minh (explicit type casting)?
a)
`double d = 5;`
b)
`int i = 3.14;`
c)
`int i = (int)3.14;`
d)
`char c = 65;`
36.
Sự khác biệt chính giữa `struct` và `class` trong C++ là gì?
a)
Không có sự khác biệt
b)
Thành viên của `struct` mặc định là `public`, của `class` là `private`
c)
`struct` không thể có hàm, `class` có thể
d)
`class` có thể kế thừa, `struct` thì không
37.
Toán tử `::` được gọi là gì?
a)
Toán tử phạm vi
b)
Toán tử thành viên
c)
Toán tử con trỏ
d)
Toán tử điều hướng
38.
Đâu là cách đúng để so sánh hai chuỗi `string s1 = "hello";` và `string s2 = "hello";`?
a)
`s1 == s2`
b)
`strcmp(s1, s2) == 0`
c)
`s1.equals(s2)`
d)
Không thể so sánh trực tiếp
39.
Trong OOP, việc che giấu thông tin chi tiết bên trong của một đối tượng được gọi là gì?
a)
Tính kế thừa (Inheritance)
b)
Tính đa hình (Polymorphism)
c)
Tính đóng gói (Encapsulation)
d)
Tính trừu tượng (Abstraction)
40.
Lỗi nào sẽ xảy ra nếu bạn cố gắng truy cập một phần tử mảng ngoài phạm vi của nó?
a)
Lỗi biên dịch (Compilation Error)
b)
Lỗi thời gian chạy (Runtime Error)
c)
Hành vi không xác định (Undefined Behavior)
d)
Cảnh báo (Warning)
41.
Một biến được khai báo với từ khóa `static` bên trong một hàm sẽ...
a)
Chỉ tồn tại trong lần gọi hàm đó
b)
Giữ lại giá trị của nó giữa các lần gọi hàm
c)
Chỉ có thể được truy cập bởi hàm đó
d)
Không thể thay đổi giá trị
42.
Để sử dụng các hàm toán học như `sqrt()` hay `pow()`, bạn cần `#include` thư viện nào?
a)
`<math>`
b)
`<cmath>`
c)
`<stdio.h>`
d)
`<algorithm>`
43.
Làm thế nào để truyền một biến vào hàm mà giá trị của nó có thể bị thay đổi bên trong hàm đó và sự thay đổi đó ảnh hưởng đến biến gốc?
a)
Truyền bằng giá trị (Pass by value)
b)
Truyền bằng tham chiếu (Pass by reference)
c)
Truyền bằng con trỏ (Pass by pointer)
d)
Cả B và C đều đúng
44.
`NULL` là gì?
a)
Một từ khóa
b)
Một macro biểu thị con trỏ null
c)
Một kiểu dữ liệu
d)
Giá trị 0
45.
Kết quả của `! (10 > 5)` là gì?
a)
true
b)
false
c)
1
d)
0
46.
Đâu là định danh biến không hợp lệ trong C++?
a)
`my_variable`
b)
`_myVariable`
c)
`myVariable1`
d)
`1myVariable`
47.
Hàm `sizeof(char)` sẽ trả về giá trị gì trên hầu hết các hệ thống?
a)
1
b)
2
c)
4
d)
8
48.
Lệnh `using namespace std;` có tác dụng gì?
a)
Khai báo một không gian tên mới tên là std
b)
Cho phép sử dụng các định danh từ namespace `std` mà không cần tiền tố `std::`
c)
Bắt buộc phải có trong mọi chương trình C++
d)
Tải tất cả các thư viện chuẩn
49.
Làm thế nào để khởi tạo tất cả các phần tử của một mảng số nguyên `int arr[10];` thành 0?
a)
`int arr[10] = {0};`
b)
`arr = 0;`
c)
`for(int i=0; i<10; i++) arr[i] = 0;`
d)
Cả A và C đều đúng
50.
Từ khóa `delete` được sử dụng với từ khóa nào?
a)
`new`
b)
`malloc`
c)
`class`
d)
`this`
51.
Đâu là cách khởi tạo một chuỗi ký tự (string) trong C++?
a)
string s = "Hello";
b)
char s[] = "Hello";
c)
string s = 'Hello';
d)
Cả A và B đều đúng
52.
Kết quả của đoạn code sau là gì: `int x = 10; x += 5; cout << x;`
a)
10
b)
5
c)
15
d)
Lỗi
53.
Một hàm đệ quy (recursive function) là hàm...
a)
Gọi một hàm khác
b)
Tự gọi lại chính nó
c)
Không bao giờ kết thúc
d)
Chỉ được viết trong các lớp (class)
54.
Trong C++, `endl` khác với `'\n'` ở điểm nào?
a)
`endl` nhanh hơn `'\n'`
b)
`endl` xóa bộ đệm (flushes the buffer), `'\n'` thì không
c)
`'\n'` chỉ dùng được với chuỗi, `endl` thì không
d)
Không có sự khác biệt
55.
Từ khóa `this` trong một lớp (class) tham chiếu đến...
a)
Đối tượng cha của lớp
b)
Đối tượng hiện tại
c)
Lớp đó
d)
Một biến toàn cục
56.
Một phương thức khởi tạo (constructor) trong C++ là một hàm đặc biệt...
a)
Được gọi khi đối tượng bị hủy
b)
Có tên trùng với tên lớp
c)
Luôn trả về kiểu `int`
d)
Dùng để sao chép đối tượng
57.
Làm thế nào để truy cập phần tử tại hàng 2, cột 3 của mảng 2 chiều `int matrix[5][5];`?
a)
`matrix[2,3]`
b)
`matrix[2][3]`
c)
`matrix(2,3)`
d)
`matrix[3][2]`
58.
Phạm vi (scope) của một biến được khai báo bên trong một vòng lặp `for` là gì?
a)
Toàn bộ chương trình
b)
Toàn bộ hàm chứa nó
c)
Chỉ bên trong vòng lặp `for` đó
d)
Chỉ trong lần lặp đó
59.
Toán tử `?:` còn được gọi là gì?
a)
Toán tử quan hệ
b)
Toán tử logic
c)
Toán tử điều kiện (ba ngôi)
d)
Toán tử gán
60.
Đâu là một ví dụ của tính đa hình (polymorphism) trong C++?
a)
Nạp chồng toán tử (Operator Overloading)
b)
Ghi đè phương thức (Method Overriding)
c)
Sử dụng template
d)
Tất cả các đáp án trên
61.
Kết quả của `(float)5 / 2` là gì?
a)
2
b)
2.0
c)
2.5
d)
Lỗi
62.
Một phương thức ảo (virtual function) cho phép...
a)
Hàm được thực thi nhanh hơn
b)
Lớp con cung cấp một triển khai cụ thể cho một phương thức đã được định nghĩa ở lớp cha
c)
Một lớp có nhiều hàm khởi tạo
d)
Hàm được gọi mà không cần tạo đối tượng
63.
Toán tử `->*` dùng để làm gì?
a)
Phép nhân con trỏ
b)
Truy cập thành viên thông qua con trỏ tới thành viên
c)
So sánh hai con trỏ
d)
Đây không phải là toán tử hợp lệ
64.
Một lớp trừu tượng (abstract class) trong C++ là lớp...
a)
Không có phương thức nào
b)
Chứa ít nhất một phương thức thuần ảo (pure virtual function)
c)
Không thể được kế thừa
d)
Chỉ chứa các thành viên `private`
65.
Làm thế nào để mở một file tên "data.txt" để ghi (write)?
a)
`ofstream myFile("data.txt");`
b)
`ifstream myFile("data.txt");`
c)
`fstream myFile("data.txt", "w");`
d)
`open("data.txt", "write");`
66.
Sự khác biệt giữa `i++` và `++i` là gì?
a)
Không có sự khác biệt
b)
`++i` tăng `i` rồi trả về giá trị mới, `i++` trả về giá trị cũ rồi mới tăng `i`
c)
`i++` nhanh hơn `++i`
d)
`++i` chỉ dùng được trong vòng lặp
67.
Lệnh `goto` làm gì?
a)
Đi đến một hàm khác
b)
Đi đến một nhãn (label) trong cùng một hàm
c)
Kết thúc chương trình
d)
Bắt đầu một luồng (thread) mới
68.
Thư viện STL là viết tắt của...
a)
Standard Type Library
b)
Standard Template Library
c)
Static Type Library
d)
Simple Template Library
69.
`vector` trong C++ là gì?
a)
Một loại con trỏ
b)
Một mảng có kích thước cố định
c)
Một mảng động (kích thước có thể thay đổi)
d)
Một hàm toán học
70.
Một `reference` (tham chiếu) trong C++ là...
a)
Một con trỏ
b)
Một bản sao của biến
c)
Một tên gọi khác (bí danh) cho một biến đã tồn tại
d)
Một kiểu dữ liệu mới
71.
Từ khóa `auto` trong C++11 dùng để làm gì?
a)
Khai báo biến tự động hủy
b)
Cho phép trình biên dịch tự suy ra kiểu của biến
c)
Khai báo biến toàn cục
d)
Tạo một bản sao của biến
72.
Đoạn code sau sẽ in ra gì: `char c = 'A'; cout << (int)c;`
a)
A
b)
1
c)
65
d)
Lỗi
73.
Mục đích của một phương thức hủy (destructor) là gì?
a)
Để tạo một đối tượng
b)
Để giải phóng tài nguyên khi đối tượng bị hủy
c)
Để sao chép đối tượng
d)
Để thay đổi tên lớp
74.
Đâu không phải là một container trong STL?
a)
`vector`
b)
`map`
c)
`array`
d)
`loop`
75.
Làm thế nào để kiểm tra xem một file có mở thành công không?
a)
`if (myFile.good())`
b)
`if (myFile.is_open())`
c)
`if (myFile)`
d)
Tất cả các đáp án trên
76.
Kế thừa bội (multiple inheritance) là gì?
a)
Một lớp kế thừa từ nhiều lớp cơ sở
b)
Nhiều lớp kế thừa từ một lớp cơ sở
c)
Một lớp được kế thừa nhiều lần
d)
Một lớp có nhiều đối tượng con
77.
Đâu là toán tử logic OR?
a)
`&`
b)
`|`
c)
`&&`
d)
`||`
78.
Một hàm `friend` của một lớp có thể...
a)
Truy cập tất cả các thành viên `public` của lớp
b)
Truy cập tất cả các thành viên `protected` của lớp
c)
Truy cập tất cả các thành viên `private` của lớp
d)
Tất cả các đáp án trên
79.
Lệnh `try...catch` được dùng để làm gì?
a)
Kiểm tra lỗi cú pháp
b)
Xử lý ngoại lệ (exceptions)
c)
Tối ưu hóa code
d)
Tạo một vòng lặp
80.
`#pragma once` là một chỉ thị tiền xử lý dùng để...
a)
Chỉ biên dịch code một lần duy nhất
b)
Đảm bảo một file header chỉ được include một lần trong một file mã nguồn
c)
Tối ưu hóa tốc độ biên dịch
d)
In ra một thông báo khi biên dịch
81.
Đoạn code `int *p = new int[10];` làm gì?
a)
Tạo một con trỏ tới một mảng 10 số nguyên
b)
Cấp phát động một mảng 10 số nguyên trên heap
c)
Cấp phát tĩnh một mảng 10 số nguyên trên stack
d)
Cả A và B đều đúng
82.
Từ khóa `namespace` được dùng để làm gì?
a)
Tạo một không gian trong bộ nhớ
b)
Ngăn chặn xung đột tên (name collision)
c)
Định nghĩa một kiểu dữ liệu mới
d)
Khai báo một hàm ảo
83.
`nullptr` là gì?
a)
Một macro giống như NULL
b)
Một từ khóa biểu thị hằng con trỏ null, an toàn về kiểu
c)
Một tên khác của số 0
d)
Một hàm trả về con trỏ void
84.
Toán tử `sizeof` trả về...
a)
Giá trị của một biến
b)
Kích thước của một biến hoặc một kiểu dữ liệu (tính bằng byte)
c)
Địa chỉ của một biến
d)
Số lượng phần tử trong một mảng
85.
Đâu là cách chính xác để giải phóng bộ nhớ được cấp phát bởi `int *arr = new int[5];`?
a)
`delete arr;`
b)
`delete[] arr;`
c)
`free(arr);`
d)
Không cần giải phóng
86.
Một `template` trong C++ cho phép...
a)
Viết code chạy nhanh hơn
b)
Viết các hàm và lớp hoạt động với các kiểu dữ liệu chung chung (generic)
c)
Tạo các file mẫu
d)
Tự động sinh ra chú thích
87.
Kết quả của `2 << 1` là gì?
a)
2
b)
1
c)
4
d)
3
88.
`const` ở cuối một khai báo phương thức thành viên (ví dụ `void print() const;`) có ý nghĩa gì?
a)
Phương thức này trả về một hằng số
b)
Phương thức này không thể bị ghi đè
c)
Phương thức này không thể thay đổi bất kỳ thành viên dữ liệu nào của đối tượng
d)
Phương thức này là tĩnh (static)
89.
Từ khóa `volatile` báo cho trình biên dịch rằng một biến...
a)
Không thể thay đổi giá trị
b)
Có thể bị thay đổi bởi các yếu tố bên ngoài chương trình
c)
Phải được lưu trong bộ nhớ chỉ đọc
d)
Là biến tạm thời
90.
Lớp `istream` được sử dụng cho...
a)
Thao tác với chuỗi
b)
Thao tác nhập liệu (Input)
c)
Thao tác xuất liệu (Output)
d)
Thao tác với file
91.
Sự khác biệt giữa `.` (dấu chấm) và `->` (mũi tên) là gì?
a)
Không có sự khác biệt
b)
`.` dùng với đối tượng, `->` dùng với con trỏ tới đối tượng
c)
`->` dùng với đối tượng, `.` dùng với con trỏ tới đối tượng
d)
`.` dùng cho biến, `->` dùng cho hàm
92.
`#include <iostream>` và `#include "myheader.h"` khác nhau như thế nào?
a)
Không có sự khác biệt
b)
`< >` tìm trong thư mục hệ thống, `" "` tìm trong thư mục hiện tại trước
c)
`< >` dùng cho thư viện C++, `" "` dùng cho thư viện C
d)
`< >` nhanh hơn `" "`
93.
`static_cast` được dùng để làm gì?
a)
Ép kiểu tại thời gian chạy
b)
Ép kiểu an toàn tại thời gian biên dịch
c)
Loại bỏ thuộc tính `const` của biến
d)
Chỉ dùng để ép kiểu con trỏ
94.
Một hàm lambda trong C++ là...
a)
Một lớp không có tên
b)
Một hàm không có tên (hàm ẩn danh)
c)
Một template hàm
d)
Một biến có thể thực thi
95.
Trong khai báo `void func(int &x);`, `&x` có nghĩa là...
a)
Địa chỉ của x
b)
x là một con trỏ
c)
x là một tham chiếu (reference)
d)
x là một hằng số
96.
`std::map` là một container lưu trữ...
a)
Các phần tử theo thứ tự chèn vào
b)
Các cặp khóa-giá trị (key-value) được sắp xếp theo khóa
c)
Chỉ các giá trị duy nhất
d)
Các phần tử dưới dạng hàng đợi
97.
Kết quả của `(5 > 3) && (1 < 0)` là gì?
a)
true
b)
false
c)
1
d)
Lỗi
98.
Toán tử `?:` yêu cầu bao nhiêu toán hạng?
a)
1
b)
2
c)
3
d)
4
99.
Lớp `ostream` được sử dụng cho...
a)
Thao tác nhập liệu (Input)
b)
Thao tác xuất liệu (Output)
c)
Cả nhập và xuất
d)
Quản lý bộ nhớ
100.
Đâu là cách khai báo một con trỏ hằng trỏ tới một số nguyên? (Con trỏ không đổi, giá trị có thể đổi)
a)
`const int *p;`
b)
`int const *p;`
c)
`int * const p;`
d)
`const int * const p;`