WorksheetsCâu hỏi trắc nghiệm: Kỹ thuật lập trình
Total questions: 123
Worksheet time: 1hrs 2mins
Trong C++, kiểu dữ liệu nào có thể lưu trữ số thực?
int
float
bool
char
Phần mở rộng của tập tin chứa mã nguồn C++ là gì?
.exe
.cpp
.c
.py
Hàm nào là điểm bắt đầu thực thi trong chương trình C++?
start()
begin()
main()
execute()
Câu nào đúng về cout trong C++?
Chỉ có thể in số nguyên
Không hỗ trợ định dạng chuỗi
Có thể in nhiều kiểu dữ liệu khác nhau
Là một hàm trong thư viện math.h
Biến nào dưới đây có tên hợp lệ trong C/C++?
2name
my-variable
my_var123
float
Kiểu dữ liệu nào có kích thước nhỏ nhất trong C/C++?
int
float
char
double
Giá trị của biểu thức (5/2) trong C/C++ là bao nhiêu?
2.5
2
3
5
Kiểu dữ liệu nào dùng để lưu trữ một ký tự trong C/C++?
char
string
text
byte
Trong ngôn ngữ C++, một dòng comment được viết bằng cách nào?
# This is a comment
// This is a comment
/* This is a comment */
Trong C/C++, kết quả của biểu thức (8%3) là bao nhiêu?
1
2
3
4
Đâu là cách khai báo biến đúng trong C/C++?
x = int;
int x;
declare int x;
var x = int;
Câu lệnh if nào đúng trong C/C++?
if x > 10 {}
if (x > 10) {}
if x > 10 then {}
if [x > 10] {}
Lệnh nào sau đây kết thúc vòng lặp ngay lập tức?
break;
continue;
exit;
stop;
Lệnh continue; trong vòng lặp có tác dụng gì?
Thoát vòng lặp
Chuyển sang vòng lặp tiếp theo
Kết thúc chương trình
Gán lại giá trị ban đầu của biến lặp
Vòng lặp nào chạy ít nhất một lần ngay cả khi điều kiện sai?
for
while
do-while
Cả ba vòng lặp trên
Dòng lệnh nào khai báo một vòng lặp for đúng?
for(int i=0; i<5; i++)
for(i=0, i<5, i++)
for i in range(0, 5)
for(i=0; i<5; i=1)
Phép toán nào trong C/C++ có độ ưu tiên cao nhất?
+
*
=
&&
Phép toán 15%3 trả về giá trị nào?
2
3
1
0
Câu lệnh nào đúng để khai báo một con trỏ đến số nguyên?
int p*;
int *p;
pointer
int p&;
Để cấp phát bộ nhớ động trong C/C++, ta dùng hàm nào?
malloc()
alloc()
new()
assign()
Hàm free(ptr); có tác dụng gì?
Giải phóng bộ nhớ được cấp phát bởi malloc
Xóa con trỏ ptr
Đặt ptr về giá trị NULL
Cả 3 phương án trên
Kiểu dữ liệu nào có độ chính xác cao nhất?
float
double
int
char
Hàm nào dưới đây được sử dụng để sao chép chuỗi?
strcopy()
strcpy()
copystr()
strmove()
Toán tử nào dùng để gán giá trị?
=
==
+=
!=
Biểu thức x += 5; tương đương với?
x = 5 + x;
x += 5;
x = 5;
x = x + 5;
Biểu thức trong câu lệnh if phải trả về kiểu dữ liệu nào?
int
float
bool hoặc giá trị tương đương
string
Kết quả của đoạn mã sau là gì? int x = 5; if (x > 3) cout<<"A"; else cout<<"B";
B
A
AB
Lỗi biên dịch
Kết quả của đoạn mã sau là gì? int x = 10; if (x == 10) printf("Hello"); else printf("World");
Hello
World
Lỗi biên dịch
Không có đầu ra
Lệnh switch có thể sử dụng kiểu dữ liệu nào cho biểu thức điều kiện?
int
float
double
string
Mỗi case trong switch có thể chứa bao nhiêu câu lệnh?
Chỉ một
Một hoặc nhiều
Không quá ba
Phụ thuộc vào trình biên dịch
Nếu không có break trong switch, điều gì xảy ra?
Chương trình sẽ dừng
Các case tiếp theo cũng được thực thi
Lỗi biên dịch
switch tự động thoát
Vòng lặp for có bao nhiêu biểu thức trong phần khai báo?
1
2
3
4
Điều kiện của while phải trả về kiểu dữ liệu nào?
int
float
bool hoặc giá trị tương đương
char
Điểm khác biệt chính giữa while và do-while?
while chạy ít nhất một lần
do-while luôn chạy ít nhất một lần
while nhanh hơn
do-while không cần điều kiện
Khi nào nên sử dụng while thay vì for?
Khi số lần lặp biết trước
Khi số lần lặp không biết trước
Khi không có điều kiện dừng
Khi chỉ cần một lần lặp
Điều gì xảy ra nếu điều kiện vòng lặp while luôn đúng?
Vòng lặp vô hạn
Chương trình dừng ngay lập tức
Lỗi biên dịch
Chỉ chạy một lần
Lệnh break dùng để làm gì?
Chuyển sang lặp tiếp theo
Nhảy đến case tiếp theo trong switch
Dừng chương trình
Thoát vòng lặp
Hàm strlen() dùng để làm gì?
Tính độ dài chuỗi
So sánh hai chuỗi
Nối chuỗi
Sao chép chuỗi
Lệnh return; trong main() có tác dụng gì?
Kết thúc chương trình
Dừng vòng lặp
Nhảy đến lệnh tiếp theo
Không có tác dụng
Lệnh do { } while(0); có tác dụng gì?
Lặp đúng một lần
Lặp vô hạn
Lỗi biên dịch
Không có tác dụng
for(;); tương đương với lệnh nào?
do-while(0)
while(1)
while(0)
for(int i = 0; i < 10; i++)
Vòng lặp nào có thể được dùng để duyệt mảng?
while
do-while
for
Cả 3 vòng lặp trên
Kiểu trả về của hàm main() thường là gì?
int
void
char
double
Khai báo hàm như sau, đâu là cách khai báo đúng?
declare sum(int a, int b);
def sum(a, b);
function sum(int a, int b);
int sum(int a, int b);
Kiểu trả về của hàm là gì?
Kiểu dữ liệu của giá trị mà hàm trả về
Kiểu dữ liệu của tham số
Kiểu của return
Tất cả đều đúng
Trong các cách gọi hàm sau, đâu là cách gọi đúng?
sum(5, 10);
sum(int a, int b);
call sum(5, 10);
execute sum(5, 10);
Kiểu dữ liệu void khi làm kiểu trả về của hàm có nghĩa là?
Hàm không trả về giá trị
Hàm không nhận tham số
Hàm có thể trả về bất kỳ kiểu nào
Hàm trả về một con trỏ
Hàm có thể có bao nhiêu tham số?
Không giới hạn
1
2
Tối đa 10
Biến khai báo bên trong hàm có phạm vi như thế nào?
Toàn cục
Toàn bộ file
Cục bộ
Không xác định
Đệ quy có thể gây ra lỗi gì nếu không có điều kiện dừng?
Lỗi logic
Tràn ngăn xếp (stack overflow)
Không có lỗi
Lỗi biên dịch
Để truyền một con trỏ vào hàm, ta khai báo như thế nào?
void func(int* x);
void func(int x);
void func(pointer x);
Trong C/C++, mảng là một:
Tập hợp các biến khác kiểu dữ liệu
Con trỏ đến một biến duy nhất
Đối tượng
Tập hợp các biến có cùng kiểu dữ liệu
Cú pháp khai báo một mảng số nguyên có 5 phần tử là gì?
int arr;
int arr = {5};
array
int arr[5];
Chỉ số (index) của mảng trong C/C++ bắt đầu từ:
1
-1
2
0
Cách khởi tạo giá trị cho mảng nào sau đây là đúng:
int arr[3] = {1, 2, 3};
int arr = {1, 2, 3};
int arr[3] = 1, 2, 3;
int arr[3]; arr = {1, 2, 3};
Khai báo và khởi tạo mảng như sau: int arr[] = {10, 20, 30, 40, 50}; Giá trị của arr[2] là bao nhiêu?
30
10
20
40
Mảng có thể chứa giá trị nào sau đây?
Số nguyên
Số thực
Ký tự
Tất cả đều đúng
Nếu int arr[5] = {1, 2};, giá trị của arr[2] là gì?
0
1
2
NULL
Cú pháp khai báo mảng 2 chiều chứa các số nguyên đúng là:
int arr[][];
int arr[3,3];
array arr[3][3];
int arr[3][3];
Để duyệt một mảng 2 chiều, cần sử dụng:
1 vòng lặp
3 vòng lặp
Không cần vòng lặp
2 vòng lặp
Ký tự đặc biệt dùng để kết thúc một chuỗi trong C/C++ là gì?
'\b'
'\t'
'\n'
'\0'
Chuỗi "Hello" trong bộ nhớ sẽ chiếm bao nhiêu byte?
5
6
7
Không xác định
Điều gì xảy ra nếu một chuỗi không có ký tự kết thúc '\0'?
Không ảnh hưởng
Chương trình tự động thêm '\0'
Không có lỗi
Chương trình sẽ bị lỗi hoặc in ra giá trị rác
Khi khai báo char str[10] = "Hi";, giá trị của str[2] là gì?
'\0'
H
i
Khoảng trắng
Thư viện nào chứa các hàm xử lý chuỗi trong C++?
Lệnh strcpy(dest, src); có tác dụng gì?
Sao chép nội dung từ src vào dest
Gán dest bằng src
So sánh hai chuỗi
Sao chép nội dung từ dest vào src
Đâu là cách nối hai chuỗi đúng?
str1 + str2;
strcat(str1, str2);
strcpy(str1, str2);
merge(str1, str2);
Hàm strcmp(str1, str2); trả về giá trị gì nếu hai chuỗi bằng nhau?
0
1
-1
Không xác định
Hàm nào dùng để sao chép n ký tự đầu của chuỗi?
strcpy()
memcpy()
strstr()
strncpy()
Hàm nào sau đây dùng để so sánh chuỗi không phân biệt chữ hoa chữ thường?
strcmpi()
strcasecmp()
stricmp()
Tất cả đều đúng
Nếu char str[] = "Hello";, thì sizeof(str) trả về gì?
6
5
4
Không xác định
Khi truyền một chuỗi vào hàm, ta thường truyền dưới dạng gì?
Con trỏ
Mảng
Giá trị
Không thể truyền chuỗi
Từ khóa nào dùng để khai báo cấu trúc trong C++?
struct
class
record
union
Kiểu dữ liệu nào có thể lưu trữ giá trị true hoặc false?
boolean
bit
bool
byte
Cho khai báo cấu trúc: struct Student { int id; char name[50]; float score; }; Lệnh nào sau đây khai báo đúng một biến thuộc kiểu struct Student?
struct Student s1;
student s1;
struct s1;
Student();
Để truy cập thành viên của một biến cấu trúc, ta dùng toán tử nào?
.
->
::
[]
Cấu trúc có thể được truyền vào hàm bằng cách nào?
Truyền giá trị
Truyền con trỏ đến cấu trúc
Truyền tham chiếu
Không thể truyền cấu trúc vào hàm
Giá trị của biểu thức (10>5 && 5<2) là?
true
false
1
0
Lợi ích của việc truyền cấu trúc bằng con trỏ thay vì truyền trực tiếp là gì?
Giảm chi phí bộ nhớ
Dễ đọc mã nguồn hơn
Tăng tốc độ chương trình
Không có lợi ích
Khi truyền một cấu trúc dùng con trỏ vào hàm, điều gì xảy ra?
Cấu trúc được sao chép thành một bản mới
Con trỏ đến cấu trúc được truyền đi
Bộ nhớ bị giải phóng
Không thể truyền
Khi làm việc với mảng cấu trúc, truy cập thành viên của phần tử thứ i trong mảng đúng là?
s->i.id
s[i]->id
s.id[i]
s[i].id
Câu lệnh int a = 5.5; sẽ có kết quả gì?
a = 5
a = 5.5
a = 6
Lỗi biên dịch
Cho biết kết quả của đoạn mã sau là gì? int i = 1; while(i <= 3) { cout << i << " "; i++; }
1 2
1 2 3
1 2 3 4
Không in gì cả
Biến con trỏ trong C++ lưu trữ giá trị gì?
Giá trị của một biến
Kích thước của một biến
Kiểu dữ liệu của một biến
Địa chỉ của một biến
Khi truyền mảng vào hàm trong C/C++, ta thực sự truyền gì?
Giá trị của mảng
Con trỏ đến mảng
Hàm cout << sizeof(int); trên hệ thống 64-bit sẽ in ra giá trị nào?
4
2
8
16
Kích thước của mảng int arr[5]; trên hệ thống 64-bit là bao nhiêu?
5 bytes
10 bytes
20 bytes
40 bytes
Để truy cập phần tử đầu tiên của mảng arr, ta sử dụng:
arr{0}
arr[1]
arr(1)
arr[0]
Phát biểu nào sau đây là đúng về mảng trong C/C++?
Mảng có thể chứa các kiểu dữ liệu khác nhau
Kích thước của mảng có thể thay đổi trong quá trình chạy
Phần tử cuối cùng của mảng có chỉ số là size - 1
Không thể khởi tạo mảng ngay khi khai báo
Biểu thức arr[i] tương đương với:
arr * i
&arr[i]
*(arr + i)
arr[i] + 1
Cách truy cập phần tử đầu tiên của mảng arr[3][4] là:
arr(0,0)
arr[0][0]
arr[0,0]
arr[1][1]
Mảng hai chiều được lưu trong bộ nhớ theo thứ tự nào?
Hàng trước, cột sau
Cột trước, hàng sau
Ngẫu nhiên
Không xác định
Để giải phóng bộ nhớ của mảng hai chiều động, ta dùng:
free()
delete
remove()
clear()
Giá trị của biểu thức if (5) là gì?
true
false
Lỗi biên dịch
Không xác định
Lệnh if-else if-else cho phép:
Kiểm tra nhiều điều kiện
Chỉ kiểm tra một điều kiện
Chỉ dùng với số nguyên
Không có trong C/C++
Cấu trúc switch-case được sử dụng để:
Thay thế if-else if-else
Tạo vòng lặp
Khai báo biến
Nhập dữ liệu
Kiểu dữ liệu của biến trong switch(expression) là gì?
int, char
float
double
Bất kỳ kiểu dữ liệu nào
Lệnh nào được dùng để thoát khỏi switch-case?
stop;
continue;
break;
return;
Cho đoạn code sau, số lần lặp của đoạn code sau là bao nhiêu lần? for(int i = 0; i < 5; i++) cout << i;
4
5
6
Vô hạn
Đâu là vòng lặp vô hạn đúng?
for(;;) { }
for(int i = 0; i < 10; ) { }
for(int i = 0; i++; ) { }
Cả A và C
Lệnh goto có thể nhảy đến đâu?
Bất cứ đâu trong hàm hiện tại
Từ hàm này sang hàm khác
Vào vòng lặp
Không có tác dụng
Hàm strchr(str,'c') trả về gì?
Vị trí ký tự 'c' đầu tiên trong str
Độ dài của chuỗi
Bản sao của chuỗi
NULL nếu không tìm thấy
Để chuyển đổi tất cả ký tự của chuỗi str thành chữ hoa, ta dùng?
toupper(str);
strtoupper(str);
strupr(str);
touuppercase(str);
Chọn lời gọi hàm dùng để đảo chuỗi.
strrev(str);
reverse(str);
revstr(str);
str_reverse(str);
Phép toán ++x có nghĩa là gì?
Tăng x lên 1, sau đó trả về giá trị mới của x
Trả về giá trị hiện tại của x, sau đó tăng x lên 1
Giảm x xuống 1
Không hợp lệ trong C++
Để xuất dữ liệu ra màn hình trong C++, ta sử dụng lệnh nào?
cout <<
printf()
print()
System.out.println()
Lệnh nhập dữ liệu trong C++ là gì?
cin >>
scanf()
input()
getchar()
Lệnh using namespace std; có ý nghĩa gì?
Bắt buộc trong mọi chương trình C++
Sử dụng tất cả thành phần của thư viện std
Định nghĩa một hàm
Không có tác dụng
C++ là ngôn ngữ lập trình?
Hướng đối tượng
Hướng thủ tục
Hướng hàm
Hướng dữ liệu
Kiểu dữ liệu nào có kích thước lớn nhất?
int
float
double
char
Lệnh if trong C++ dùng để làm gì?
Lặp lại một đoạn code
Kiểm tra điều kiện
Xuất dữ liệu ra màn hình
Nhập dữ liệu từ bàn phím
Vòng lặp for được sử dụng khi nào?
Khi số lần lặp không xác định trước
Khi số lần lặp xác định trước
Khi chỉ có một câu lệnh
Khi không có điều kiện nào cần kiểm tra
Cho biết kết quả đoạn code sau: int x = 10; while (x < 15) { x += 2; } cout << x;
10
12
14
16
Lệnh nào dùng để giải phóng bộ nhớ đã cấp phát bằng new?
delete ptr;
free(ptr);
remove(ptr);
delete[] ptr;
Từ khóa nào dùng để truyền tham chiếu?
&
*
->
@
Hàm đệ quy là gì?
Hàm gọi lại chính nó
Hàm có vòng lặp
Hàm có nhiều tham số
Hàm không có giá trị trả về
Đâu là cách khai báo đúng của một hàm trong C++?
function int foo();
int foo();
void foo[];
foo() int;
#include
Lệnh nhập xuất dữ liệu
Lệnh khai báo thư viện
Lệnh nhập tệp
Lệnh định nghĩa biến
Lệnh cin.ignore() có tác dụng gì?
Bỏ qua dòng dữ liệu hiện tại
Dừng chương trình
Xóa bộ nhớ
Xóa màn hình
Cho biết kết quả đoạn code sau: #include
5
10
15
Lỗi biên dịch
Cho biết kết quả đoạn code sau: int arr[] = {10, 20, 30}; int *ptr = arr; cout << *(ptr + 1); return 0;
10
20
30
Lỗi biên dịch
Cho biết kết quả đoạn code sau: #include
5
10
20
Lỗi biên dịch
Cho biết kết quả đoạn code sau: #include
5
10
Địa chỉ của x
Lỗi biên dịch
