Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Câu hỏi trắc nghiệm: Kỹ thuật lập trình

Total questions: 123

Worksheet time: 1hrs 2mins

Name
Class
Date
1.

Trong C++, kiểu dữ liệu nào có thể lưu trữ số thực?

a)

int

b)

float

c)

bool

d)

char

2.

Phần mở rộng của tập tin chứa mã nguồn C++ là gì?

a)

.exe

b)

.cpp

c)

.c

d)

.py

3.

Hàm nào là điểm bắt đầu thực thi trong chương trình C++?

a)

start()

b)

begin()

c)

main()

d)

execute()

4.

Câu nào đúng về cout trong C++?

a)

Chỉ có thể in số nguyên

b)

Không hỗ trợ định dạng chuỗi

c)

Có thể in nhiều kiểu dữ liệu khác nhau

d)

Là một hàm trong thư viện math.h

5.

Biến nào dưới đây có tên hợp lệ trong C/C++?

a)

2name

b)

my-variable

c)

my_var123

d)

float

6.

Kiểu dữ liệu nào có kích thước nhỏ nhất trong C/C++?

a)

int

b)

float

c)

char

d)

double

7.

Giá trị của biểu thức (5/2) trong C/C++ là bao nhiêu?

a)

2.5

b)

2

c)

3

d)

5

8.

Kiểu dữ liệu nào dùng để lưu trữ một ký tự trong C/C++?

a)

char

b)

string

c)

text

d)

byte

9.

Trong ngôn ngữ C++, một dòng comment được viết bằng cách nào?

a)

# This is a comment

b)

// This is a comment

c)

d)

/* This is a comment */

10.

Trong C/C++, kết quả của biểu thức (8%3) là bao nhiêu?

a)

1

b)

2

c)

3

d)

4

11.

Đâu là cách khai báo biến đúng trong C/C++?

a)

x = int;

b)

int x;

c)

declare int x;

d)

var x = int;

12.

Câu lệnh if nào đúng trong C/C++?

a)

if x > 10 {}

b)

if (x > 10) {}

c)

if x > 10 then {}

d)

if [x > 10] {}

13.

Lệnh nào sau đây kết thúc vòng lặp ngay lập tức?

a)

break;

b)

continue;

c)

exit;

d)

stop;

14.

Lệnh continue; trong vòng lặp có tác dụng gì?

a)

Thoát vòng lặp

b)

Chuyển sang vòng lặp tiếp theo

c)

Kết thúc chương trình

d)

Gán lại giá trị ban đầu của biến lặp

15.

Vòng lặp nào chạy ít nhất một lần ngay cả khi điều kiện sai?

a)

for

b)

while

c)

do-while

d)

Cả ba vòng lặp trên

16.

Dòng lệnh nào khai báo một vòng lặp for đúng?

a)

for(int i=0; i<5; i++)

b)

for(i=0, i<5, i++)

c)

for i in range(0, 5)

d)

for(i=0; i<5; i=1)

17.

Phép toán nào trong C/C++ có độ ưu tiên cao nhất?

a)

+

b)

*

c)

=

d)

&&

18.

Phép toán 15%3 trả về giá trị nào?

a)

2

b)

3

c)

1

d)

0

19.

Câu lệnh nào đúng để khai báo một con trỏ đến số nguyên?

a)

int p*;

b)

int *p;

c)

pointer p;

d)

int p&;

20.

Để cấp phát bộ nhớ động trong C/C++, ta dùng hàm nào?

a)

malloc()

b)

alloc()

c)

new()

d)

assign()

21.

Hàm free(ptr); có tác dụng gì?

a)

Giải phóng bộ nhớ được cấp phát bởi malloc

b)

Xóa con trỏ ptr

c)

Đặt ptr về giá trị NULL

d)

Cả 3 phương án trên

22.

Kiểu dữ liệu nào có độ chính xác cao nhất?

a)

float

b)

double

c)

int

d)

char

23.

Hàm nào dưới đây được sử dụng để sao chép chuỗi?

a)

strcopy()

b)

strcpy()

c)

copystr()

d)

strmove()

24.

Toán tử nào dùng để gán giá trị?

a)

=

b)

==

c)

+=

d)

!=

25.

Biểu thức x += 5; tương đương với?

a)

x = 5 + x;

b)

x += 5;

c)

x = 5;

d)

x = x + 5;

26.

Biểu thức trong câu lệnh if phải trả về kiểu dữ liệu nào?

a)

int

b)

float

c)

bool hoặc giá trị tương đương

d)

string

27.

Kết quả của đoạn mã sau là gì? int x = 5; if (x > 3) cout<<"A"; else cout<<"B";

a)

B

b)

A

c)

AB

d)

Lỗi biên dịch

28.

Kết quả của đoạn mã sau là gì? int x = 10; if (x == 10) printf("Hello"); else printf("World");

a)

Hello

b)

World

c)

Lỗi biên dịch

d)

Không có đầu ra

29.

Lệnh switch có thể sử dụng kiểu dữ liệu nào cho biểu thức điều kiện?

a)

int

b)

float

c)

double

d)

string

30.

Mỗi case trong switch có thể chứa bao nhiêu câu lệnh?

a)

Chỉ một

b)

Một hoặc nhiều

c)

Không quá ba

d)

Phụ thuộc vào trình biên dịch

31.

Nếu không có break trong switch, điều gì xảy ra?

a)

Chương trình sẽ dừng

b)

Các case tiếp theo cũng được thực thi

c)

Lỗi biên dịch

d)

switch tự động thoát

32.

Vòng lặp for có bao nhiêu biểu thức trong phần khai báo?

a)

1

b)

2

c)

3

d)

4

33.

Điều kiện của while phải trả về kiểu dữ liệu nào?

a)

int

b)

float

c)

bool hoặc giá trị tương đương

d)

char

34.

Điểm khác biệt chính giữa while và do-while?

a)

while chạy ít nhất một lần

b)

do-while luôn chạy ít nhất một lần

c)

while nhanh hơn

d)

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

35.

Khi nào nên sử dụng while thay vì for?

a)

Khi số lần lặp biết trước

b)

Khi số lần lặp không biết trước

c)

Khi không có điều kiện dừng

d)

Khi chỉ cần một lần lặp

36.

Điều gì xảy ra nếu điều kiện vòng lặp while luôn đúng?

a)

Vòng lặp vô hạn

b)

Chương trình dừng ngay lập tức

c)

Lỗi biên dịch

d)

Chỉ chạy một lần

37.

Lệnh break dùng để làm gì?

a)

Chuyển sang lặp tiếp theo

b)

Nhảy đến case tiếp theo trong switch

c)

Dừng chương trình

d)

Thoát vòng lặp

38.

Hàm strlen() dùng để làm gì?

a)

Tính độ dài chuỗi

b)

So sánh hai chuỗi

c)

Nối chuỗi

d)

Sao chép chuỗi

39.

Lệnh return; trong main() có tác dụng gì?

a)

Kết thúc chương trình

b)

Dừng vòng lặp

c)

Nhảy đến lệnh tiếp theo

d)

Không có tác dụng

40.

Lệnh do { } while(0); có tác dụng gì?

a)

Lặp đúng một lần

b)

Lặp vô hạn

c)

Lỗi biên dịch

d)

Không có tác dụng

41.

for(;); tương đương với lệnh nào?

a)

do-while(0)

b)

while(1)

c)

while(0)

d)

for(int i = 0; i < 10; i++)

42.

Vòng lặp nào có thể được dùng để duyệt mảng?

a)

while

b)

do-while

c)

for

d)

Cả 3 vòng lặp trên

43.

Kiểu trả về của hàm main() thường là gì?

a)

int

b)

void

c)

char

d)

double

44.

Khai báo hàm như sau, đâu là cách khai báo đúng?

a)

declare sum(int a, int b);

b)

def sum(a, b);

c)

function sum(int a, int b);

d)

int sum(int a, int b);

45.

Kiểu trả về của hàm là gì?

a)

Kiểu dữ liệu của giá trị mà hàm trả về

b)

Kiểu dữ liệu của tham số

c)

Kiểu của return

d)

Tất cả đều đúng

46.

Trong các cách gọi hàm sau, đâu là cách gọi đúng?

a)

sum(5, 10);

b)

sum(int a, int b);

c)

call sum(5, 10);

d)

execute sum(5, 10);

47.

Kiểu dữ liệu void khi làm kiểu trả về của hàm có nghĩa là?

a)

Hàm không trả về giá trị

b)

Hàm không nhận tham số

c)

Hàm có thể trả về bất kỳ kiểu nào

d)

Hàm trả về một con trỏ

48.

Hàm có thể có bao nhiêu tham số?

a)

Không giới hạn

b)

1

c)

2

d)

Tối đa 10

49.

Biến khai báo bên trong hàm có phạm vi như thế nào?

a)

Toàn cục

b)

Toàn bộ file

c)

Cục bộ

d)

Không xác định

50.

Đệ quy có thể gây ra lỗi gì nếu không có điều kiện dừng?

a)

Lỗi logic

b)

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

c)

Không có lỗi

d)

Lỗi biên dịch

51.

Để truyền một con trỏ vào hàm, ta khai báo như thế nào?

a)

void func(int* x);

b)

void func(int x);

c)

void func(pointer x);

52.

Trong C/C++, mảng là một:

a)

Tập hợp các biến khác kiểu dữ liệu

b)

Con trỏ đến một biến duy nhất

c)

Đối tượng

d)

Tập hợp các biến có cùng kiểu dữ liệu

53.

Cú pháp khai báo một mảng số nguyên có 5 phần tử là gì?

a)

int arr;

b)

int arr = {5};

c)

array arr[5];

d)

int arr[5];

54.

Chỉ số (index) của mảng trong C/C++ bắt đầu từ:

a)

1

b)

-1

c)

2

d)

0

55.

Cách khởi tạo giá trị cho mảng nào sau đây là đúng:

a)

int arr[3] = {1, 2, 3};

b)

int arr = {1, 2, 3};

c)

int arr[3] = 1, 2, 3;

d)

int arr[3]; arr = {1, 2, 3};

56.

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?

a)

30

b)

10

c)

20

d)

40

57.

Mảng có thể chứa giá trị nào sau đây?

a)

Số nguyên

b)

Số thực

c)

Ký tự

d)

Tất cả đều đúng

58.

Nếu int arr[5] = {1, 2};, giá trị của arr[2] là gì?

a)

0

b)

1

c)

2

d)

NULL

59.

Cú pháp khai báo mảng 2 chiều chứa các số nguyên đúng là:

a)

int arr[][];

b)

int arr[3,3];

c)

array arr[3][3];

d)

int arr[3][3];

60.

Để duyệt một mảng 2 chiều, cần sử dụng:

a)

1 vòng lặp

b)

3 vòng lặp

c)

Không cần vòng lặp

d)

2 vòng lặp

61.

Ký tự đặc biệt dùng để kết thúc một chuỗi trong C/C++ là gì?

a)

'\b'

b)

'\t'

c)

'\n'

d)

'\0'

62.

Chuỗi "Hello" trong bộ nhớ sẽ chiếm bao nhiêu byte?

a)

5

b)

6

c)

7

d)

Không xác định

63.

Điều gì xảy ra nếu một chuỗi không có ký tự kết thúc '\0'?

a)

Không ảnh hưởng

b)

Chương trình tự động thêm '\0'

c)

Không có lỗi

d)

Chương trình sẽ bị lỗi hoặc in ra giá trị rác

64.

Khi khai báo char str[10] = "Hi";, giá trị của str[2] là gì?

a)

'\0'

b)

H

c)

i

d)

Khoảng trắng

65.

Thư viện nào chứa các hàm xử lý chuỗi trong C++?

a)

b)

c)

d)

66.

Lệnh strcpy(dest, src); có tác dụng gì?

a)

Sao chép nội dung từ src vào dest

b)

Gán dest bằng src

c)

So sánh hai chuỗi

d)

Sao chép nội dung từ dest vào src

67.

Đâu là cách nối hai chuỗi đúng?

a)

str1 + str2;

b)

strcat(str1, str2);

c)

strcpy(str1, str2);

d)

merge(str1, str2);

68.

Hàm strcmp(str1, str2); trả về giá trị gì nếu hai chuỗi bằng nhau?

a)

0

b)

1

c)

-1

d)

Không xác định

69.

Hàm nào dùng để sao chép n ký tự đầu của chuỗi?

a)

strcpy()

b)

memcpy()

c)

strstr()

d)

strncpy()

70.

Hàm nào sau đây dùng để so sánh chuỗi không phân biệt chữ hoa chữ thường?

a)

strcmpi()

b)

strcasecmp()

c)

stricmp()

d)

Tất cả đều đúng

71.

Nếu char str[] = "Hello";, thì sizeof(str) trả về gì?

a)

6

b)

5

c)

4

d)

Không xác định

72.

Khi truyền một chuỗi vào hàm, ta thường truyền dưới dạng gì?

a)

Con trỏ

b)

Mảng

c)

Giá trị

d)

Không thể truyền chuỗi

73.

Từ khóa nào dùng để khai báo cấu trúc trong C++?

a)

struct

b)

class

c)

record

d)

union

74.

Kiểu dữ liệu nào có thể lưu trữ giá trị true hoặc false?

a)

boolean

b)

bit

c)

bool

d)

byte

75.

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?

a)

struct Student s1;

b)

student s1;

c)

struct s1;

d)

Student();

76.

Để 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?

a)

.

b)

->

c)

::

d)

[]

77.

Cấu trúc có thể được truyền vào hàm bằng cách nào?

a)

Truyền giá trị

b)

Truyền con trỏ đến cấu trúc

c)

Truyền tham chiếu

d)

Không thể truyền cấu trúc vào hàm

78.

Giá trị của biểu thức (10>5 && 5<2) là?

a)

true

b)

false

c)

1

d)

0

79.

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ì?

a)

Giảm chi phí bộ nhớ

b)

Dễ đọc mã nguồn hơn

c)

Tăng tốc độ chương trình

d)

Không có lợi ích

80.

Khi truyền một cấu trúc dùng con trỏ vào hàm, điều gì xảy ra?

a)

Cấu trúc được sao chép thành một bản mới

b)

Con trỏ đến cấu trúc được truyền đi

c)

Bộ nhớ bị giải phóng

d)

Không thể truyền

81.

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à?

a)

s->i.id

b)

s[i]->id

c)

s.id[i]

d)

s[i].id

82.

Câu lệnh int a = 5.5; sẽ có kết quả gì?

a)

a = 5

b)

a = 5.5

c)

a = 6

d)

Lỗi biên dịch

83.

Cho biết kết quả của đoạn mã sau là gì? int i = 1; while(i <= 3) { cout << i << " "; i++; }

a)

1 2

b)

1 2 3

c)

1 2 3 4

d)

Không in gì cả

84.

Biến con trỏ trong C++ lưu trữ giá trị gì?

a)

Giá trị của một biến

b)

Kích thước của một biến

c)

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

d)

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

85.

Khi truyền mảng vào hàm trong C/C++, ta thực sự truyền gì?

a)

Giá trị của mảng

b)

Con trỏ đến mảng

86.

Hàm cout << sizeof(int); trên hệ thống 64-bit sẽ in ra giá trị nào?

a)

4

b)

2

c)

8

d)

16

87.

Kích thước của mảng int arr[5]; trên hệ thống 64-bit là bao nhiêu?

a)

5 bytes

b)

10 bytes

c)

20 bytes

d)

40 bytes

88.

Để truy cập phần tử đầu tiên của mảng arr, ta sử dụng:

a)

arr{0}

b)

arr[1]

c)

arr(1)

d)

arr[0]

89.

Phát biểu nào sau đây là đúng về mảng trong C/C++?

a)

Mảng có thể chứa các kiểu dữ liệu khác nhau

b)

Kích thước của mảng có thể thay đổi trong quá trình chạy

c)

Phần tử cuối cùng của mảng có chỉ số là size - 1

d)

Không thể khởi tạo mảng ngay khi khai báo

90.

Biểu thức arr[i] tương đương với:

a)

arr * i

b)

&arr[i]

c)

*(arr + i)

d)

arr[i] + 1

91.

Cách truy cập phần tử đầu tiên của mảng arr[3][4] là:

a)

arr(0,0)

b)

arr[0][0]

c)

arr[0,0]

d)

arr[1][1]

92.

Mảng hai chiều được lưu trong bộ nhớ theo thứ tự nào?

a)

Hàng trước, cột sau

b)

Cột trước, hàng sau

c)

Ngẫu nhiên

d)

Không xác định

93.

Để giải phóng bộ nhớ của mảng hai chiều động, ta dùng:

a)

free()

b)

delete

c)

remove()

d)

clear()

94.

Giá trị của biểu thức if (5) là gì?

a)

true

b)

false

c)

Lỗi biên dịch

d)

Không xác định

95.

Lệnh if-else if-else cho phép:

a)

Kiểm tra nhiều điều kiện

b)

Chỉ kiểm tra một điều kiện

c)

Chỉ dùng với số nguyên

d)

Không có trong C/C++

96.

Cấu trúc switch-case được sử dụng để:

a)

Thay thế if-else if-else

b)

Tạo vòng lặp

c)

Khai báo biến

d)

Nhập dữ liệu

97.

Kiểu dữ liệu của biến trong switch(expression) là gì?

a)

int, char

b)

float

c)

double

d)

Bất kỳ kiểu dữ liệu nào

98.

Lệnh nào được dùng để thoát khỏi switch-case?

a)

stop;

b)

continue;

c)

break;

d)

return;

99.

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;

a)

4

b)

5

c)

6

d)

Vô hạn

100.

Đâu là vòng lặp vô hạn đúng?

a)

for(;;) { }

b)

for(int i = 0; i < 10; ) { }

c)

for(int i = 0; i++; ) { }

d)

Cả A và C

101.

Lệnh goto có thể nhảy đến đâu?

a)

Bất cứ đâu trong hàm hiện tại

b)

Từ hàm này sang hàm khác

c)

Vào vòng lặp

d)

Không có tác dụng

102.

Hàm strchr(str,'c') trả về gì?

a)

Vị trí ký tự 'c' đầu tiên trong str

b)

Độ dài của chuỗi

c)

Bản sao của chuỗi

d)

NULL nếu không tìm thấy

103.

Để chuyển đổi tất cả ký tự của chuỗi str thành chữ hoa, ta dùng?

a)

toupper(str);

b)

strtoupper(str);

c)

strupr(str);

d)

touuppercase(str);

104.

Chọn lời gọi hàm dùng để đảo chuỗi.

a)

strrev(str);

b)

reverse(str);

c)

revstr(str);

d)

str_reverse(str);

105.

Phép toán ++x có nghĩa là gì?

a)

Tăng x lên 1, sau đó trả về giá trị mới của x

b)

Trả về giá trị hiện tại của x, sau đó tăng x lên 1

c)

Giảm x xuống 1

d)

Không hợp lệ trong C++

106.

Để xuất dữ liệu ra màn hình trong C++, ta sử dụng lệnh nào?

a)

cout <<

b)

printf()

c)

print()

d)

System.out.println()

107.

Lệnh nhập dữ liệu trong C++ là gì?

a)

cin >>

b)

scanf()

c)

input()

d)

getchar()

108.

Lệnh using namespace std; có ý nghĩa gì?

a)

Bắt buộc trong mọi chương trình C++

b)

Sử dụng tất cả thành phần của thư viện std

c)

Định nghĩa một hàm

d)

Không có tác dụng

109.

C++ là ngôn ngữ lập trình?

a)

Hướng đối tượng

b)

Hướng thủ tục

c)

Hướng hàm

d)

Hướng dữ liệu

110.

Kiểu dữ liệu nào có kích thước lớn nhất?

a)

int

b)

float

c)

double

d)

char

111.

Lệnh if trong C++ dùng để làm gì?

a)

Lặp lại một đoạn code

b)

Kiểm tra điều kiện

c)

Xuất dữ liệu ra màn hình

d)

Nhập dữ liệu từ bàn phím

112.

Vòng lặp for được sử dụng khi nào?

a)

Khi số lần lặp không xác định trước

b)

Khi số lần lặp xác định trước

c)

Khi chỉ có một câu lệnh

d)

Khi không có điều kiện nào cần kiểm tra

113.

Cho biết kết quả đoạn code sau: int x = 10; while (x < 15) { x += 2; } cout << x;

a)

10

b)

12

c)

14

d)

16

114.

Lệnh nào dùng để giải phóng bộ nhớ đã cấp phát bằng new?

a)

delete ptr;

b)

free(ptr);

c)

remove(ptr);

d)

delete[] ptr;

115.

Từ khóa nào dùng để truyền tham chiếu?

a)

&

b)

*

c)

->

d)

@

116.

Hàm đệ quy là gì?

a)

Hàm gọi lại chính nó

b)

Hàm có vòng lặp

c)

Hàm có nhiều tham số

d)

Hàm không có giá trị trả về

117.

Đâu là cách khai báo đúng của một hàm trong C++?

a)

function int foo();

b)

int foo();

c)

void foo[];

d)

foo() int;

118.

#include là gì?

a)

Lệnh nhập xuất dữ liệu

b)

Lệnh khai báo thư viện

c)

Lệnh nhập tệp

d)

Lệnh định nghĩa biến

119.

Lệnh cin.ignore() có tác dụng gì?

a)

Bỏ qua dòng dữ liệu hiện tại

b)

Dừng chương trình

c)

Xóa bộ nhớ

d)

Xóa màn hình

120.

Cho biết kết quả đoạn code sau: #include using namespace std; int main() { int a = 10, *p; p = &a; *p += 5; cout << a; return 0; }

a)

5

b)

10

c)

15

d)

Lỗi biên dịch

121.

Cho biết kết quả đoạn code sau: int arr[] = {10, 20, 30}; int *ptr = arr; cout << *(ptr + 1); return 0;

a)

10

b)

20

c)

30

d)

Lỗi biên dịch

122.

Cho biết kết quả đoạn code sau: #include using namespace std; void func(int &x) { x *= 2; } int main() { int a = 5; func(a); cout << a; return 0; }

a)

5

b)

10

c)

20

d)

Lỗi biên dịch

123.

Cho biết kết quả đoạn code sau: #include using namespace std; int main() { int x = 5, y = 10; int *ptr = &x; *ptr = y; cout << x; return 0; }

a)

5

b)

10

c)

Địa chỉ của x

d)

Lỗi biên dịch