
1
CÂU HỎI TRẮC NGHI ỆM
Câu 1: Cho danh sách liên kết đơn có thành phần dữ
liêu là data, đoạn mã nào chèn phần tử r vào giữa p
và q:
A. r-
> next= p;
p->
next= r
B. r-
> next= q-
> data
p-
> next= r-
> data
C. p-
> next= r;
r-
> next= q;
D. Không có
đáp án nào
đúng.
Câu 2: Cho đoạn mã sau:
newNum= 0;
number= 857;
while(number% 10> = 0)
{
temp= number% 10;
number= number/ 10;
newNum= newNum* 10+ temp;
}
cout< < newNum;
Cho biết kết quả xuất ra:
A. 857 B. 758 C. 8570 D. 7580
Câu 3: Cho con trỏ head, để truy cập đến thành phần
item thì thực hiện các cách sau:
A. head.item; B. head-> item; C. * head.item;
D. (* head).item;
Câu 4: Cho 1 Stack gồm 5 phần tử 2,4,6,8,10 và 1
Queue rỗng. Thực hiện chuyển từng phần tử của S

2
vào Q, sau đó lại chuyển từng phần tử của Q vào S.
Cho biết các phần tử của S hiện tại (tính từ đỉnh):
A. 10,8,6,4,2. B. 2,10,8,4,6 C. 2,4,6,8,10
D. 10,2,4,6,8.
Câu 5: Cho P là một Stack. Cho biết giá trị thực hiện
Pop ra sau cùng khi thực hiện các thao tác sau:
Push(P,225);
Push(P,5);
Push(P,2);
Pop(P);
Pop(P);
Push(P,3);
Pop(P);
A. 3 B. 5 C. 2 D. Không có đáp án
đúng.
Câu 6: Cho biết kết quả xuất ra:
# include< iostream.h>
int test(int n)
{
int sum;
if (n< = 1) return 1;
sum= test(n-1)+ test(n-2);
cout< < n;
return sum;
}
void main()
{
cout< < endl< < test(3)< < endl;
}
A. 24
3
B. 24
4
C. 23
3
D. 23
4

3
Câu 7: Khi nhập vào các giá trị : 5,21,1 vào một danh
sách; sau đó muốn in ra: 1,21,5 thì nên chọn cấu trúc
dữ liệu nào sau đây:
A. Stack B. Queue C. 2 đáp án A,B đúng
D. 2 đáp án A,B sai
Câu 8:
Cho hàm change như sau:
void change(int &a,int b)
{ a = a+ 7;
b= b+ 3;
}
Chương trình sử dụng hàm change nói trên như sau:
void main()
{ int x,y;
x = 10;y= 10;
change (x,y);
cout < < x+ y;
}
Kết quả xuất ra màn hình là:
A. 1713 B. 30 C. 20 D. 27
Câu 9:
Điều kiện nào phải thoả mãn để tìm kiếm nhị phân
thành công trên một mảng?
A. Không gì cả B. Tìm giá trị ở giữa của
mảng
C. Mảng phải được sắp xếp D. Mảng phải được
phân họach làm 3 phần: nhỏ hợn, bằng, lớn hơn so với
giá trị ở giữa
Câu 10:
Cho hàm sau:
int Func( int n )

4
{
if (n = = 5)
return 5;
else
return 2 * Func(n + 1); }
Cho biết kết quả khi gọi hàm Func(2) ?
A. 50 B. 2 C. 40 D.10
Câu 11:
Cho iptr là con trỏ, trỏ đến phần tử Item. Lệnh nào
sau đây dùng để giải phóng bộ nhớ của iptr?
A. iptr = NULL; B. delete iptr; C. delete
* iptr; D. iptr-> ~ I tem();
Câu 12: Cho hàm sau:
void wow (int n)
{
if (n > 1)
wow (n/ 2);
cout< < n < < " ";
}
Cho biết kết quả khi thực hiện lời gọi hàm wow(16)?
A. 32 16 8 4 2 B. 16 8 4 2 1 C. 2 4 8 16 32
D. 1 2 4 8 16
Câu 13:
Cho mảng các số nguyên
a[10]= { 10,9,8,7,6,5,4,3,2,1} . Thực hiện tìm kiếm giá
trị x=1 bằng phương pháp tìm kiếm tuyến tính.
Cho biết số phép so sánh thuật toán thực hiện:
A. 9 B. 8 C. 10 D.1
Câu 14: Đối với khai báo: *p=new int(50); có ý nghĩa
gì?

5
A. Cấp phát vùng nhớ động do con trỏ p quản lý
B. Thu hồi vùng nhớ đã cấp phát
C. Hủy bỏ vùng nhớ do p trỏ tới (quản lý). D.
Gán giá trị của địa chỉ của vùng nhớ cho một con trỏ p
nào đó.
Câu 15:
Cho biết kết quả xuất ra của chương trình sau đây
trên màn hình là gì?
# include < stdio.h>
void test(int * xp);
int main()
{
int x,y;
x = y = 10;
y+ + ; / / y= 11
test(&x);
test(&y);
printf("% d % d\ n",x,y);
}
void test(int * xp)
{
int y;
y = * xp+ 5;
* xp = y+ + * 3;
}
A. 45 45 B. 22 33 C. 48 45 D. 45
48
Câu 16:
Xét hàm guess dưới đây
int guess(int n)
{