lOMoARcPSD| 61548706
I. Trắc nghiệm
1. Chọn phát biểu ĐÚNG về hàm có tham số ngầm ịnh trong C++
a. Khi hàm có tham số ngầm ịnh có prototype, thì giá trị ngầm ịnh trong ịnh
nghĩa hàm có ý nghĩa cao hơn giá trị ịnh nghĩa trong prototype.
b. Khi a năng hóa toán tử không ược dùng tham số có giá trị ngầm ịnh.
c. Tham số ngầm ịnh của hàm có thể nằm ở vị trí bất kỳ trong hàm có danh
sách tham số nhiều hơn các tham số ngầm ịnh.
d. Tất cả các phát biểu trên ều sai.
2. Trong những phát biểu sau ây vsử dụng các khoảng trắng trong phong cách
lập trình, phát biểu nào ĐÚNG?
a. Sử dụng tab thay cho space ể căn lề (indentation)
b. Sử dụng khoảng trắng ể mã nguồn dễ ọc
c. Không nên sử dụng tính năng tự ộng căn lề của trình soạn thảo
d. Không cần phải căn lề do việc căn lề không làm thay ổi việc biên dịch
chương trình
3. Một biến ược gọi là biến toàn cục nếu:
a. Nó ược khai báo trong tất cả các hàm, ngoại trừ hàm main().
b. Nó ược khai báo bên trong hàm main().
c. Nó ược khai báo ngoài tất cả các hàm, kể cả hàm main()
d. Nó ược khai báo bên ngoài hàm main().
4. Một biến ược gọi là một biến cục bộ nếu:
a. Nó ược khai báo bên trong các hàm ngoại trừ hàm main().
b. Nó ược khai báo bên trong hàm main().
c. Nó ược khai báo bên ngoài các hàm kể cả hàm main().
d. Nó ược khai báo bên trong các các hàm kể cả hàm main().
5. Để hiển thị fileName lineNumber của một file nguồn C bất kỳ một
dòng bất kỳ, ta dùng các macro nào sau ây: a. Tất cả các áp án còn lại ều sai
b. _ _NAME_ _ và _ _NUMBER_ _
c. _ _FILE_ _ và _ _NUM_ _
d. _ _FILE_ _ và _ _LINE_ _
lOMoARcPSD| 61548706
6. Đâu không phải là ngôn ngữ lập trình bậc cao?
a. Python
b. Pascal
c. PHP
d. Assembly
7. Đâu không phải là một trình biên dịch của ngôn ngữ C++?
a. Cython
b. MSS Visual C++
c. GNU GCC
d. Clang
e. Watcom C/C++
8. Phát biểu nào sau về kỹ thuật Assertion là SAI?
a. Assertion là một macro hay một chương trình con dùng trong quá trình phát
triển ứng dụng, cho phép chương trình tự kiểm tra khi chạy.
b. Assertion có thể dùng ể kiểm tra giả thiết ược ưa ra trong code và loại bỏ
những iều kiện không mong ợi.
c. Assertion là một kỹ thuật sử dụng trong lập trình phòng ngừa.
d. Assertion là kỹ thuật ể phát hiện các lỗi liên quan tới bộ nhớ trong chương
trình
9. Chọn thứ tự ưu tiên úng của các toán tử logic trong C/C++ (Từ cao -> thấp ):
a. NOT, OR, AND
b. NOT, AND, OR
c. AND, NOT, OR
d. OR, NOT, AND
NOT, AND, XOR, OR
10. Thư viện nào giúp chương trình dừng lại ngay lập tức khi vi phạm một iều kiện
nào ó?
a. Tất cả các áp án còn lại ều úng
b. exception.h
lOMoARcPSD| 61548706
c. assert.h
d. fault.h
11. Giả sử ma trận hai chiều arr ược khai báo như sau:
int a[1000][1000];
Xét hai số nguyên i, j (0 ≤ i, j ≤ n). Các chỉ số hàng và cột ược ánh số từ 0. Hãy
chỉ ra câu lệnh úng ể in ra giá trị phần tử hàng i cột j của ma trận.
Nếu có nhiều áp án úng, hãy chọn tất cả các áp áp úng. Chọn ít nhất một áp
án sai sẽ không ược iểm. a. cout << a[i][j] << endl;
b. cout << *(a + i + 1) + j + 1 << endl;
c. cout << *(a + j) + i << endl;
d. cout << *(*(a + i) + j) << endl;
e. cout << *(a + i) + j << endl;
12. Chọn áp án SAI trong các phát biểu sau:
a. Biến tĩnh (static) nằm trong cùng vùng nhớ cấp phát cho biến tổng thể
b. Dữ liệu cấp phát ộng và biến trỏ nằm trong vùng nhớ heap ( áp án trong ề )
c. Biến cục bộ và tham số của hàm nằm trong vùng nhớ stack
d. Biến thanh ghi (register) nằm ngbay trong CPU Data segment chia thành 3
phần:
- Static: biến tổng thể và biến tĩnh a dúng
- Stack data: các biến cục bộ cảu chương trình con c úng
- Heap data: dliệu ược cấp phát ộng, biến con trỏ trong vùng nhớ stack b
sai
- Biến thanh ghi ược lưu trong thanh ghi d úng
13. Cho khai báo : int M[][] ={{1,2,3},{4,5},}; Hãy lựa chọn áp án Đúng :
a. M là mảng 2 chiều có kích thước 2 x 3
b. M là mảng 2 chiều có kích thước 3 x 3
c. M là mảng Không xác ịnh
d. Có lỗi syntax // áp án úng
14. Cấu trúc dữ liệu có thứ tự truy cập phần tử theo kiểu: vào sau ra trước
lOMoARcPSD| 61548706
a. Queue
b. Stack
c. Vector
d. Array
15.Trong các loại sau ây, loại nào không phải là ệ quy trực tiếp
a. Đệ quy nhị phân
b. Đệ quy tuyến tính
c. Đệ quy phi tuyến
d. Đệ quy tương h
16. Khuyến nghị ĐÚNG về quy tắc ặt tên phong cách lập trình tốt là:
a. Dùng chuỗi ký tự ngẫu nhiên ể ặt tên
b. Đặt tên có ý nghĩa ể từ tên gọi có thể hiểu ược vai trò của nó-
c. Chỉ dùng các ký tự ơn ể ặt tên giúp viết mã nguồn nhanh chóng
d. Đặt tên biến càng dài càng tốt
17. Khi truy cập lần lượt các phần tử của mảng hai chiều kích thước 30x30, cách
nào thưng em lại hiệu quả tốt hơn về tốc ộ?
a. Truy cập phần tử cuối cùng rồi giảm dần chỉ số hàng, khi ến giới hạn thì
gán chỉ số cột về 29 rồi giảm chỉ số cột.
b. Truy cập phần tử cuối cùng rồi giảm dần chỉ số cột, khi ến giới hạn thì gán
chỉ số cột về 29 rồi giảm chỉ số hàng.
c. Truy cập phần tử ầu tiên rồi tăng dần chỉ số hàng, khi ến giới hạn thì gán
chỉ số hàng về 0 rồi tăng chỉ số cột.
d. Truy cập phần tử ầu tiên rồi tăng dần chỉ số cột, khi ến giới hạn thì gán chỉ
số cột về 0 rồi tăng chỉ số hàng.
18. Mô tả nào sau ây úng với khuôn mẫu hàm (function template) trong C++:
a. Cho phép ngưi lập trình xây dựng các hàm tổng quát
b. Cho phép ngưi lập trình tạo chương trình theo mô-un
c. Cho phép lập trình viên viết các oạn mã cụ thể cho một vấn ề
d. Một tính năng không bổ sung bất kỳ sức mạnh nào cho ngôn ngữ
19. Phương pháp nào không ược dùng ể khử ệ quy
lOMoARcPSD| 61548706
a. Khử ệ quy bằng vòng lặp
b. Khử ệ quy uôi
c. Khử ệ quy bằng Stack
d. Khử ệ quy bằng Queue
20. Statement coverage là phương pháp o ộ bao phủ kiểm thử. Statement coverage
ạt 100% có nghĩa là:
a. Toàn bộ chức năng ã ược kiểm thử
b. Tất cả các dòng lệnh và tất cả các nhánh trong chương trình ã ược kiểm tra
ít nhất một lần
c. Tất cả các dòng lệnh trong mã nguồn ã ược kiểm tra ít nhất một lần
d. Tất cả các nhánh trong chương trình ã ược kiểm tra ít nhất một lần
21. Các khai báo hàm nào dưới ây là hợp lệ:
a. void MyFunc(int a = 7, float b = 2.0, int c = 5, int d)
b. void MyFunc(int a, float b = 2.0, int c, int d = 4)
c. void MyFunc(int a = 7, float b, int c = 5, int d = 4)
d. void MyFunc(int a, float b = 2.0, int c = 5, int d = 4)
22. Đâu là tệp mô tả các ối tượng luồng vào ra chuẩn cin, cout, cerr và clog của
C++?
a. stdlib
b. iostream
c. stdio
d. fstream
23. Cho khai báo nguyên mẫu hàm và các khai báo biến:
float myfunct(int& a, float b); int
x = 10;
float y = 4.5;
lệnh gọi hàm nào sau ây sẽ úng về mặt cú pháp?
a. y = myfunct(24, 4.5);
lOMoARcPSD| 61548706
b. y = 0.5 * myfunct(x, 4.5);
c. myfunct(4.5, y);
d. y = myfunct(x + 5, y);
int &a trả về tham chiếu nên bắt buộc phải truyền vào 1 biến
24.Đây là dạng ệ quy nào?
int f(int n){ if (n < 3) return 1;
else return f(n - 1) + 2*f(n - 2);
}
a. Đệ quy tương h
b. Đệ quy nhị phân
c. Đệ quy tuyến tính
d. Đệ quy phi tuyến
Hai cái x và y á là tương hộ
Tuyến tính: tính giai thừa
Phi tuyến: ược gọi trong vòng lặp
25. Chọn áp án SAI : trong C++, vế trái của phép gán có thể là :
a. Một mảng
b. Một biểu thức
c. Một biến
d. Một Hàm
26. Trong các cách ặt tên hàm sau ây, cách nào cách nên dùng? Biết rằng hàm này
nhiệm vụ n cứ vào khóa trong bảng băm xóa i một phần tử. a. void
deletedKeys
b. void xoaKhoa
c. void xoaKey
d. void removeByKey
27. Chọn áp án SAI về biến tĩnh (static variable )
a. Biến tĩnh là biến cục bộ của 1 hàm nên ược cấp phát bộ nhớ trong vùng nhớ
stack
b. Biến tĩnh ược cấp phát bộ nhớ trong cùng vùng nhớ với biến tổng thể
lOMoARcPSD| 61548706
c. Biến tĩnh không ược giải phóng khi hàm chứa nó ược thực hiện xong
d. Giá trị của biến tĩnh chỉ ược khởi tạo ở lần gọi hàm ầu tiên
- Biến tĩnh ược cấp phát trong vùng nhớ static a sai -
28.Cho mt danh sách móc nối với các phần tử trong danh sách có kiểu S1 ược ịnh
nghĩa như sau:
struct S1{int info; struct S1 *next;} *head;
Biết con trỏ head lưu ịa chỉ của phần tử ầu tiên trong danh sách. Nhóm câu lệnh
nào sau ây thêm một phần tử mới p vào ầu danh sách:
a. head->next = p; p = head;
b. p->next = head; head = p;
c. p->next = head; head = p-> next;
d. Không có phương án nào úng
29. Phát biểu nào dưới ây là chính xác về phong cách lập trình:
a. Phong cách lập trình tốt giúp chương trình rõ ràng, ơn giản, dễ ọc , dễ hiểu
b. Phong cách lập trình chỉ áp dụng cho ngôn ngữ lập trình C++ và Java
c. Phong cách lập trình giúp tăng tốc ộ thực thi của chương trình
d. Phong cách lập trình chỉ bao gồm quy tắc liên quan ến các chú thích của mã
nguồn
30. Phát biểu nào SAI về các tính năng trên các công cụ gỡ lỗi phổ biến cho
C/C++ hiện nay?
a. Thực thi từng câu lệnh sau iểm dừng
b. Đặt iểm dừng (breakpoint) tại vị trí bất kỳ trong mã nguồn
c. Phân tích các lỗi core-dump
d. Kiểm tra giá trị của các biến
e. Tất cả ều sai
31. Chọn phát biểu ĐÚNG về hàm trong các phát biểu sau :
a. Trong C/C++ tên hàm phải là duy nhất
b. Hàm trong C/C++ chỉ có duy nhất 1 cách truyền tham số là truyền tham trị
lOMoARcPSD| 61548706
c. Li gọi hàm trong C++ có thể có số ối số ít hơn so với số tham số trong ịnh
nghĩa hàm
d. Trong C/C++ li gọi hàm phải số ối số úng bằng hợp tương ứng về
kiểu so với tham số trong ịnh nghĩa hàm.
- Trong trưng hợp có tham số ngầm ịnh thì có thể ít hơn c úng
32.Để viết oạn thực hiện việc ọc in tự ến cuối tệp, oạn nào sau ây
úng và có phong cách viết mã tốt?
Đoạn mã #1:
while (c = getchar() != EOF)
putchar(c);
Đoạn mã #2:
while ((c = getchar()) != EOF)
putchar(c);
Đoạn mã #3:
while (c = (getchar() != EOF))
putchar(c);
Đoạn mã #4:
while (c ==(getchar() != EOF))
putchar(c);
a. Đoạn mã #1
b. Đoạn mã #2
c. Đoạn mã #3
d. Đoạn mã #4
33. Giả sử mảng arr ược cấp phát ộng như sau:
arr = new int[100];
Hãy chỉ ra âu là câu lệnh giải phóng bộ nhớ mảng arr úng.
a. remove(a);
lOMoARcPSD| 61548706
b. free(a);
c. delete a; // xóa 1 biến ơn
d. delete [] arr; // xóa luôn cả 1 mảng
e. delete arr[] ;
34.Những iều nào sau ây là ĐÚNG với tinh chỉnh mã nguồn:
a. Chỉ thực hiện tinh chỉnh mã nguồn sau khi ã kiểm tra gỡ rối chương trình.
b. Tinh chỉnh mã nguồn liên quan ến việc thay ổi thiết kế ở phạm vi rộng.
c. Tinh chỉnh nguồn thay ổi toàn bộ nguồn ã chạy thông báo theo
hướng hiệu quả hơn nữa.
d. Không thực hiện tinh chỉnh mã nguồn sau khi ã bàn giao chương trình.
35. Khi có 2 vòng lặp lồng nhau thì nên:
a. Chuyển vòng lặp ngắn ra ngoài.
b. Chuyển vòng lặp dài ra ngoài, nhưng cần lưu ý tránh làm mất ưu thế của bộ
nhớ cache.
c. Chuyển vòng lặp dài ra ngoài.
d. Chuyển vòng lặp ngắn ra ngoài, nhưng cần lưu ý tránh làm mất ưu thế của
bộ nhớ cache.
36. Đâu không phải là một mô thức lập trình?
Hãy chọn tất các các áp án úng. Nếu chọn ít nhất một áp án sai sẽ không có iểm.
a. Hướng giải thuật
b. Hướng logic
c. Hướng ối tượng
d. Hướng ệ quy
e. Hướng mệnh lệnh
f. Hướng cấu trúc dữ liệu
g. Hướng chức năng
37. Trưng hợp nào nên dùng vector thay vì dùng deque?
a. Không có áp án nào úng
b. Cần chèn vào phần tử ở giữa của danh sách
c. Cần chèn ở ầu theo kiểu FIFO ( áp án trong ề)
lOMoARcPSD| 61548706
d. Cần chèn ở cả hai phía của danh sách
38.Các hàm quản lý bộ nhớ ộng trong C thuộc thư viện nào?
a. dynamic
b. mem
c. stdio
d. stdlib
39. Phương pháp “Lính canh” ược sử dụng ể làm gì?
a. Là 1 kỹ thuật gỡ rối
b. Là một kỹ thuật tăng hiệu năng chương trình
c. Là 1 kỹ thuật kiểm thử
d. Là một kỹ thuật tối ưu bộ nhớ
40. Kỹ thuật lính canh có thể áp dụng cho:
a. Xâu ký tự
b. Cả 3 áp án trên ều úng
c. Mảng
d. Danh sách
41. Lý do nào khiến một số lập trình viên ưa thích việc viết chương trình ệ quy?
a. Sử dụng hiệu quả bộ nhớ Stack
b. Tốc ộ hoạt ộng của chương trình nhanh0
c. Lập trình ơn giản, dễ hiểu và dễ bảo trì ( áp án trong ề)
d. Không gian bộ nhớ sử dụng nhỏ gọn
- Đáp án c úng
42. Chọn áp án SAI về hàm nội tuyến (Inline function)
a. Giúp tiết kiệm chi phí gọi hàm, cấp phát, giải phóng các biến trên stack
b. Có thể chứa các biến tĩnh
c. Là 1 loại hàm của C++, có từ khóa inline trước kiểu giá trị trả về của hàm
d. Thân hàm ược thay thế trực tiếp vào nơi hàm ược gọi
43. Chọn phát biểu sai: Khi ịnh nghĩa 1 hàm với ký hiệu & ở trước tên hàm thì:
lOMoARcPSD| 61548706
a. Nếu hàm ịnh nghĩa phép toán, thì thứ tự thực hiện của phép toán ó là từ
trái qua phải
b. Hàm trả về 1 tham chiếu
c. Hàm có thể ứng ở vế trái phép gán
d. Tất cả các phát biểu trên ều sai
44.Hàm nào dưới ây yêu cầu chương trình phải thoát ngay lập tức bất chấp sự
úng sai của iều kiện? a. abort(void);
b. assert(int num);
c. Tất cả áp án còn lại ều sai
d. exit(int num);
45. Chọn phát biểu úng về a năng hoá hàm (overloading) trong C++:
a. Các hàm dài có chứa nhiều lệnh xử lý
b. Một hàm chứa một hoặc nhiều hàm khác bên trong nó
c. Hai hoặc nhiều hàm cùng tên nhưng khác số lượng tham số hoặc một số
tham số tương ứng có kiểu dữ liệu khác nhau
d. Hai hoặc nhiều hàm khác tên nhưng danh sách tham số giống nhau
46. Hãy chỉ ra cặp từ khoá ể bắt ngoại lệ trong C++
a. try … throw …
b. try … catch …
c. throw … catch …
d. try … break …
47. Phát biểu nào sau ây là úng về phong cách lập trình tốt?
a. Hy sinh sự rõ ràng ể chương trình hiệu quả hơn
b. Không nên sử dụng các thủ tục ệ quy cho các cấu trúc dữ liệu ệ quy
c. Sử dụng nhiều biến tạm, trung gian
d. Để máy tính thực hiện các việc nặng nhọc (vd: tính toán)
48. Trong cú pháp của lambda, toán tử nào sau ây ược sử dụng ể bắt tất cả các biến
bên ngoài truy cập bằng tham chiếu? a.
b. *
c. &
lOMoARcPSD| 61548706
d. &&
49. Các kỹ thuật viết code hiệu quả là:
a. Các kỹ thuật xây dựng thuật toán tối ưu
b. Các kỹ thuật khử ệ quy
c. Các kỹ thuật làm tăng tốc ộ (hiệu quả) thực hiện chương trình
d. Các kỹ thuật trình bày chương trình sao cho ơn giản, rõ ràng, dễ hiểu
50. Liệu macro nào có thể ược sử dụng ể phát hiện và báo ra các vi phạm trong mã
nguồn của chương trình? a. edom
b. assert
c. extern
d. lbdl_min 1e-37
e. exception
51. Khi nói ến các khái niệm:
(a) các dòng nhập chuẩn nói chung và nó thưng là từ bàn phím;
(b) các dòng xuất chuẩn nói chung và nó thưng là xuất ra màn hình;
(c) dòng xuất lỗi chuẩn nói chung cũng thưng xuất trực tiếp ra màn
hình.
Chúng ta ang ề cập lần lượt ến:
a. stdout, stdin, stderr
b. stdin, stdout, stdexp
c. stdkey, stdcon, stderr
d. stdin, stdout, stderr
52. Chọn áp án sai: Khi truy cập tới phần tở hàng i cột j của mảng 2 chiều M, ta
có thể viết: a. i[M][j]
b. *(*(M+i)+j)
c. M[i][j]
d. j[M][i]
53. Chọn phát biểu sai: Khi a năng hoá toán tử (overloading operator)
lOMoARcPSD| 61548706
a. Có thể dùng tham số có giá trị ngầm ịnh
b. Không ược ịnh nghĩa các toán tử mới: ví dụ @, $
c. Không ược ịnh nghĩa toán tử iều kiện ( ?: )
d. Phải ít nhất 1 tham số (toán hạng) thuộc kiểu dliệu do ngưi dùng ịnh
nghĩa
54. Cho biết kết quả khi biên dịch và thực thi chương trình sau:
#include <iostream> using
namespace std; void calc(int
a, int b, int & c){
a = b * c; b = a *
c;// = b*b*c c = a * b;//b*c*b*b*c
= 3^5
} int
main(){
int x = 2, y =3;
calc(x, y, y); cout << x << "
" << y; return 0;
}
a. 2 27
b. 2 18
c. 2 243
d. 2 3
55. Chọn kết quả ĐÚNG trên màn hình sau khi thực hiện chương trình sau ;
#include <stdio.h> void
foo(int *a, int b, int &c) {
a+=5;
b+=6; c+=7;
lOMoARcPSD| 61548706
} int main() {
int a=5,b=6,c=7;
foo(&b,c,a);
printf(“%d %d
%d”,a,b,c);
}
a. 12 6 7
b. Chương trình có lỗi
c. 10 6 14
d. 5 6 14
56. Với oạn mã sau, nếu n=13 thì các phần tử ược ưa vào (push) ngăn xếp S theo
thứ tự nào?
while (n!= 0){
R = n % 2;
S.push(R);
n /= 2;
}
a. 1 , 3 , 6
b. 1 , 1 , 0 , 1
c. 6 , 3 , 1
d. 1 , 0 , 1 , 1
57. Cho oạn chương trình sau:
void f1(int *p, int n, int k)
{
if(k < n) {
// vị trí cần iền các lệnh
}
lOMoARcPSD| 61548706
} int main() { int n = 4, i,
m[4] ={3,6,7,4};
f1(m,n-1,0);
}
Biết rằng hàm f1 nhiệm vụ ảo chiều mảng ầu vào (ví dụ 3,6,7,4 sẽ thành
4,7,6,3). Đoạn mã cần iền vào vị trí trống sẽ là:
a. int temp = *(p+k-1);
*(p+k-1) = *(p+n-1-k); *(p+n-1-
k) = temp;
f1(p,n-1,k+1);
b. int temp = *(p+k+1);
*(p+k+1) = *(p+n-k); *(p+n-
k) = temp;
f1(p,n-1,k+1);
c. int temp = *(p+k+1);
*(p+k+1) = *(p+n-1-k); *(p+n-1-
k) = temp;
f1(p,n-1,k+1);
d. int temp = *(p+k);
*(p+k) = *(p+n);
*(p+n) = temp;
f1(p,n-1,k+1);
58. Cho oạn mã ịnh nghĩa cấu trúc Box như sau. (*)
typedef struct { int capacity;} Box;
Đâu là lựa chọn chính xác ể ịnh nghĩa toán tử + cho hai ối tượng Box?
a. Box operator + (Box b1,Box b2) { Box tmp;
tmp. capacity = b1. capacity + b2.
capacity; return tmp; }
lOMoARcPSD| 61548706
b. Box operator + (Box b1,Box b2) { return b1. capacity + b2. capacity;
}
c. Toán tử + không ược a năng hoá.
d. void operator + (Box b1,Box b2) { Box tmp;
tmp. capacity = b1. capacity + b2. capacity;
}
59. Kết quả của chương trình sau là gì:
#include <stdio.h> int
main()
{ int i,j;
for (i=1;i<4;i++) j=i;
printf("\n%3d",j);
return 0;
}
a. 4
b. 3
c. 1 2 3 4
d. Kết quả khác
60. #include <iostream> using namespace std; void func(int x, bool state = false) {
if (state== true ) {
cout << "State: true, x = " <<x/2;
}
else {
cout << "State: false, x = " <<x;
}
} int main()
{
func(120);
return 0;
lOMoARcPSD| 61548706
}
a. State: true, x = 60
b. State: false, x = 60
c. State: false, x = 120
d. State: true, x = 120
61. Kết quả chương trình sau là gì
#include <stdio.h> void
(int * px, int * py){
int *z; z = px; px =
py; py = z; } int
main(){ int a=15,
b=21; (&a,&b);
printf("%d %d",a,b);
return 0;
};
a. 15 21
b. Không có kết quả do chương trình bị lỗi
c. 21 15
d. Kết quả khác
62. Cho biết kết quả khi biên dịch và thực thi chương trình sau:
#include <iostream> using
namespace std;
int func(int a = 10, int b) {
int c; c = a + b;
return c; } int main() {
cout << func(10);
return 0;
}
a. 0
b. 20
lOMoARcPSD| 61548706
c. Lỗi biên dịch chương trình
d. 10
63. Xét oạn chương trình sau:
void superWriteVertical(int number){
if (number < 0) {
cout << "-";
superWriteVertical(-number);
} else if (number < 10) cout
<< number;
else {
superWriteVertical(number / 10);
cout << number % 10;
}
}
Hỏi giá trị nào của biến number ược tính toán trực tiếp như trưng hợp sở
(neo ệ quy)?
a. number < 0
b. number < 10
c. number >10
d. number >= 0 && number < 10
64. Kết quả ầu ra của chương trình sau là gì?
#include<assert.h>
#include<stdio.h>
int main(){
int n = 12; char str[50]
= ""; assert(n>=10);
printf("output: %d\n",n);
assert(str != NULL);
printf("output: %s\n",
str);
}
lOMoARcPSD| 61548706
a. Hai dòng output: 12 và assertion error
b. output: 12
c. Hai dòng output: 12 và output:
d. error
65. Chọn kết quả úng trên màn hình #include…
inline int vd(int x, int y){ static int a
= 10; return (x > a || y) ? x – a + y++ :
x + y;
} int main(){ int m =
5, n = 8;
printf(“%d”,vd(m,n))
;
}
a. Chương trình có lỗi
b. 13
c. 9
d. 3
66. Cho biết kết quả in ra màn hình của CT sau :
#include <stdio.h> int
main() {
int i = 10, j = 0;
if (i || (j = i + 10))
printf("%d", j);
return 0;
}
lOMoARcPSD| 61548706
a. 1
b. 20
c. 0
d. 10
67. Cho biết kết quả của chương trình sau :
#include <stdio.h>jy
int main() {
char *s;
s="Ngon Ngu Lap Trinh C++";
s+=8;
cout<<s;
}
a. Lap Trinh C++
b. Ngon Ngu
c. Ngon Ngu Lap Trinh C++8
d. Ngon Ngu Lap Trinh C++
68. Kết quả ầu ra của chương trình sau là gì?
#include<assert.h>
#include<stdio.h> void
main(){ int n = 11; char
str[50] = “program”;
assert(n >= 10); printf(“
output: %d\n”, n); assert(str
!= NULL); printf(“output:
%s\n”, str);
}

Preview text:

lOMoAR cPSD| 61548706 I. Trắc nghiệm
1. Chọn phát biểu ĐÚNG về hàm có tham số ngầm ịnh trong C++
a. Khi hàm có tham số ngầm ịnh có prototype, thì giá trị ngầm ịnh trong ịnh
nghĩa hàm có ý nghĩa cao hơn giá trị ịnh nghĩa trong prototype.
b. Khi a năng hóa toán tử không ược dùng tham số có giá trị ngầm ịnh.
c. Tham số ngầm ịnh của hàm có thể nằm ở vị trí bất kỳ trong hàm có danh
sách tham số nhiều hơn các tham số ngầm ịnh.
d. Tất cả các phát biểu trên ều sai.
2. Trong những phát biểu sau ây về sử dụng các khoảng trắng trong phong cách
lập trình, phát biểu nào ĐÚNG?
a. Sử dụng tab thay cho space ể căn lề (indentation)
b. Sử dụng khoảng trắng ể mã nguồn dễ ọc
c. Không nên sử dụng tính năng tự ộng căn lề của trình soạn thảo
d. Không cần phải căn lề do việc căn lề không làm thay ổi việc biên dịch chương trình
3. Một biến ược gọi là biến toàn cục nếu:
a. Nó ược khai báo trong tất cả các hàm, ngoại trừ hàm main().
b. Nó ược khai báo bên trong hàm main().
c. Nó ược khai báo ngoài tất cả các hàm, kể cả hàm main()
d. Nó ược khai báo bên ngoài hàm main().
4. Một biến ược gọi là một biến cục bộ nếu:
a. Nó ược khai báo bên trong các hàm ngoại trừ hàm main().
b. Nó ược khai báo bên trong hàm main().
c. Nó ược khai báo bên ngoài các hàm kể cả hàm main().
d. Nó ược khai báo bên trong các các hàm kể cả hàm main().
5. Để hiển thị fileName và lineNumber của một file mã nguồn C bất kỳ và một
dòng bất kỳ, ta dùng các macro nào sau ây: a. Tất cả các áp án còn lại ều sai
b. _ _NAME_ _ và _ _NUMBER_ _ c. _ _FILE_ _ và _ _NUM_ _ d. _ _FILE_ _ và _ _LINE_ _ lOMoAR cPSD| 61548706
6. Đâu không phải là ngôn ngữ lập trình bậc cao? a. Python b. Pascal c. PHP d. Assembly
7. Đâu không phải là một trình biên dịch của ngôn ngữ C++? a. Cython b. MSS Visual C++ c. GNU GCC d. Clang e. Watcom C/C++
8. Phát biểu nào sau về kỹ thuật Assertion là SAI?
a. Assertion là một macro hay một chương trình con dùng trong quá trình phát
triển ứng dụng, cho phép chương trình tự kiểm tra khi chạy.
b. Assertion có thể dùng ể kiểm tra giả thiết ược ưa ra trong code và loại bỏ
những iều kiện không mong ợi.
c. Assertion là một kỹ thuật sử dụng trong lập trình phòng ngừa.
d. Assertion là kỹ thuật ể phát hiện các lỗi liên quan tới bộ nhớ trong chương trình
9. Chọn thứ tự ưu tiên úng của các toán tử logic trong C/C++ (Từ cao -> thấp ): a. NOT, OR, AND b. NOT, AND, OR c. AND, NOT, OR d. OR, NOT, AND NOT, AND, XOR, OR
10. Thư viện nào giúp chương trình dừng lại ngay lập tức khi vi phạm một iều kiện nào ó?
a. Tất cả các áp án còn lại ều úng b. exception.h lOMoAR cPSD| 61548706 c. assert.h d. fault.h
11. Giả sử ma trận hai chiều arr ược khai báo như sau: int a[1000][1000];
Xét hai số nguyên i, j (0 ≤ i, j ≤ n). Các chỉ số hàng và cột ược ánh số từ 0. Hãy
chỉ ra câu lệnh úng ể in ra giá trị phần tử hàng i cột j của ma trận.
Nếu có nhiều áp án úng, hãy chọn tất cả các áp áp úng. Chọn ít nhất một áp
án sai sẽ không ược iểm. a. cout << a[i][j] << endl;
b. cout << *(a + i + 1) + j + 1 << endl;
c. cout << *(a + j) + i << endl;
d. cout << *(*(a + i) + j) << endl;
e. cout << *(a + i) + j << endl;
12. Chọn áp án SAI trong các phát biểu sau:
a. Biến tĩnh (static) nằm trong cùng vùng nhớ cấp phát cho biến tổng thể
b. Dữ liệu cấp phát ộng và biến trỏ nằm trong vùng nhớ heap ( áp án trong ề )
c. Biến cục bộ và tham số của hàm nằm trong vùng nhớ stack
d. Biến thanh ghi (register) nằm ngbay trong CPU Data segment chia thành 3 phần:
- Static: biến tổng thể và biến tĩnh → a dúng
- Stack data: các biến cục bộ cảu chương trình con → c úng
- Heap data: dữ liệu ược cấp phát ộng, biến con trỏ trong vùng nhớ stack→ b sai
- Biến thanh ghi ược lưu trong thanh ghi → d úng
13. Cho khai báo : int M[][] ={{1,2,3},{4,5},}; Hãy lựa chọn áp án Đúng :
a. M là mảng 2 chiều có kích thước 2 x 3
b. M là mảng 2 chiều có kích thước 3 x 3
c. M là mảng Không xác ịnh
d. Có lỗi syntax // áp án úng
14. Cấu trúc dữ liệu có thứ tự truy cập phần tử theo kiểu: vào sau ra trước lOMoAR cPSD| 61548706 a. Queue b. Stack c. Vector d. Array
15.Trong các loại sau ây, loại nào không phải là ệ quy trực tiếp a. Đệ quy nhị phân b. Đệ quy tuyến tính c. Đệ quy phi tuyến d. Đệ quy tương hỗ
16. Khuyến nghị ĐÚNG về quy tắc ặt tên phong cách lập trình tốt là:
a. Dùng chuỗi ký tự ngẫu nhiên ể ặt tên
b. Đặt tên có ý nghĩa ể từ tên gọi có thể hiểu ược vai trò của nó-
c. Chỉ dùng các ký tự ơn ể ặt tên giúp viết mã nguồn nhanh chóng
d. Đặt tên biến càng dài càng tốt
17. Khi truy cập lần lượt các phần tử của mảng hai chiều kích thước 30x30, cách
nào thường em lại hiệu quả tốt hơn về tốc ộ?
a. Truy cập phần tử cuối cùng rồi giảm dần chỉ số hàng, khi ến giới hạn thì
gán chỉ số cột về 29 rồi giảm chỉ số cột.
b. Truy cập phần tử cuối cùng rồi giảm dần chỉ số cột, khi ến giới hạn thì gán
chỉ số cột về 29 rồi giảm chỉ số hàng.
c. Truy cập phần tử ầu tiên rồi tăng dần chỉ số hàng, khi ến giới hạn thì gán
chỉ số hàng về 0 rồi tăng chỉ số cột.
d. Truy cập phần tử ầu tiên rồi tăng dần chỉ số cột, khi ến giới hạn thì gán chỉ
số cột về 0 rồi tăng chỉ số hàng.
18. Mô tả nào sau ây úng với khuôn mẫu hàm (function template) trong C++:
a. Cho phép người lập trình xây dựng các hàm tổng quát
b. Cho phép người lập trình tạo chương trình theo mô-un
c. Cho phép lập trình viên viết các oạn mã cụ thể cho một vấn ề
d. Một tính năng không bổ sung bất kỳ sức mạnh nào cho ngôn ngữ
19. Phương pháp nào không ược dùng ể khử ệ quy lOMoAR cPSD| 61548706
a. Khử ệ quy bằng vòng lặp b. Khử ệ quy uôi c. Khử ệ quy bằng Stack d. Khử ệ quy bằng Queue
20. Statement coverage là phương pháp o ộ bao phủ kiểm thử. Statement coverage ạt 100% có nghĩa là:
a. Toàn bộ chức năng ã ược kiểm thử
b. Tất cả các dòng lệnh và tất cả các nhánh trong chương trình ã ược kiểm tra ít nhất một lần
c. Tất cả các dòng lệnh trong mã nguồn ã ược kiểm tra ít nhất một lần
d. Tất cả các nhánh trong chương trình ã ược kiểm tra ít nhất một lần
21. Các khai báo hàm nào dưới ây là hợp lệ:
a. void MyFunc(int a = 7, float b = 2.0, int c = 5, int d)
b. void MyFunc(int a, float b = 2.0, int c, int d = 4)
c. void MyFunc(int a = 7, float b, int c = 5, int d = 4)
d. void MyFunc(int a, float b = 2.0, int c = 5, int d = 4)
22. Đâu là tệp mô tả các ối tượng luồng vào ra chuẩn cin, cout, cerr và clog của C++? a. stdlib b. iostream c. stdio d. fstream
23. Cho khai báo nguyên mẫu hàm và các khai báo biến:
float myfunct(int& a, float b); int x = 10; float y = 4.5;
lệnh gọi hàm nào sau ây sẽ úng về mặt cú pháp? a. y = myfunct(24, 4.5); lOMoAR cPSD| 61548706 b. y = 0.5 * myfunct(x, 4.5); c. myfunct(4.5, y); d. y = myfunct(x + 5, y);
int &a trả về tham chiếu nên bắt buộc phải truyền vào 1 biến
24.Đây là dạng ệ quy nào?
int f(int n){ if (n < 3) return 1;
else return f(n - 1) + 2*f(n - 2); } a. Đệ quy tương hỗ b. Đệ quy nhị phân c. Đệ quy tuyến tính d. Đệ quy phi tuyến
Hai cái x và y á là tương hộ
Tuyến tính: tính giai thừa
Phi tuyến: ược gọi trong vòng lặp
25. Chọn áp án SAI : trong C++, vế trái của phép gán có thể là : a. Một mảng b. Một biểu thức c. Một biến d. Một Hàm
26. Trong các cách ặt tên hàm sau ây, cách nào là cách nên dùng? Biết rằng hàm này
có nhiệm vụ căn cứ vào khóa trong bảng băm ể xóa i một phần tử. a. void deletedKeys b. void xoaKhoa c. void xoaKey d. void removeByKey
27. Chọn áp án SAI về biến tĩnh (static variable )
a. Biến tĩnh là biến cục bộ của 1 hàm nên ược cấp phát bộ nhớ trong vùng nhớ stack
b. Biến tĩnh ược cấp phát bộ nhớ trong cùng vùng nhớ với biến tổng thể lOMoAR cPSD| 61548706
c. Biến tĩnh không ược giải phóng khi hàm chứa nó ược thực hiện xong
d. Giá trị của biến tĩnh chỉ ược khởi tạo ở lần gọi hàm ầu tiên
- Biến tĩnh ược cấp phát trong vùng nhớ static → a sai -
28.Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 ược ịnh nghĩa như sau:
struct S1{int info; struct S1 *next;} *head;
Biết con trỏ head lưu ịa chỉ của phần tử ầu tiên trong danh sách. Nhóm câu lệnh
nào sau ây thêm một phần tử mới p vào ầu danh sách:
a. head->next = p; p = head;
b. p->next = head; head = p;
c. p->next = head; head = p-> next;
d. Không có phương án nào úng
29. Phát biểu nào dưới ây là chính xác về phong cách lập trình:
a. Phong cách lập trình tốt giúp chương trình rõ ràng, ơn giản, dễ ọc , dễ hiểu
b. Phong cách lập trình chỉ áp dụng cho ngôn ngữ lập trình C++ và Java
c. Phong cách lập trình giúp tăng tốc ộ thực thi của chương trình
d. Phong cách lập trình chỉ bao gồm quy tắc liên quan ến các chú thích của mã nguồn
30. Phát biểu nào SAI về các tính năng có trên các công cụ gỡ lỗi phổ biến cho C/C++ hiện nay?
a. Thực thi từng câu lệnh sau iểm dừng
b. Đặt iểm dừng (breakpoint) tại vị trí bất kỳ trong mã nguồn
c. Phân tích các lỗi core-dump
d. Kiểm tra giá trị của các biến e. Tất cả ều sai
31. Chọn phát biểu ĐÚNG về hàm trong các phát biểu sau :
a. Trong C/C++ tên hàm phải là duy nhất
b. Hàm trong C/C++ chỉ có duy nhất 1 cách truyền tham số là truyền tham trị lOMoAR cPSD| 61548706
c. Lời gọi hàm trong C++ có thể có số ối số ít hơn so với số tham số trong ịnh nghĩa hàm
d. Trong C/C++ lời gọi hàm phải có số ối số úng bằng và hợp tương ứng về
kiểu so với tham số trong ịnh nghĩa hàm.
- Trong trường hợp có tham số ngầm ịnh thì có thể ít hơn → c úng
32.Để viết oạn mã thực hiện việc ọc và in ký tự ến cuối tệp, oạn mã nào sau ây là
úng và có phong cách viết mã tốt? Đoạn mã #1: while (c = getchar() != EOF) putchar(c); Đoạn mã #2:
while ((c = getchar()) != EOF) putchar(c); Đoạn mã #3:
while (c = (getchar() != EOF)) putchar(c); Đoạn mã #4:
while (c ==(getchar() != EOF)) putchar(c); a. Đoạn mã #1 b. Đoạn mã #2 c. Đoạn mã #3 d. Đoạn mã #4
33. Giả sử mảng arr ược cấp phát ộng như sau: arr = new int[100];
Hãy chỉ ra âu là câu lệnh giải phóng bộ nhớ mảng arr úng. a. remove(a); lOMoAR cPSD| 61548706 b. free(a);
c. delete a; // xóa 1 biến ơn
d. delete [] arr; // xóa luôn cả 1 mảng e. delete arr[] ;
34.Những iều nào sau ây là ĐÚNG với tinh chỉnh mã nguồn:
a. Chỉ thực hiện tinh chỉnh mã nguồn sau khi ã kiểm tra và gỡ rối chương trình.
b. Tinh chỉnh mã nguồn liên quan ến việc thay ổi thiết kế ở phạm vi rộng.
c. Tinh chỉnh mã nguồn là thay ổi toàn bộ mã nguồn ã chạy thông báo theo
hướng hiệu quả hơn nữa.
d. Không thực hiện tinh chỉnh mã nguồn sau khi ã bàn giao chương trình.
35. Khi có 2 vòng lặp lồng nhau thì nên:
a. Chuyển vòng lặp ngắn ra ngoài.
b. Chuyển vòng lặp dài ra ngoài, nhưng cần lưu ý tránh làm mất ưu thế của bộ nhớ cache.
c. Chuyển vòng lặp dài ra ngoài.
d. Chuyển vòng lặp ngắn ra ngoài, nhưng cần lưu ý tránh làm mất ưu thế của bộ nhớ cache.
36. Đâu không phải là một mô thức lập trình?
Hãy chọn tất các các áp án úng. Nếu chọn ít nhất một áp án sai sẽ không có iểm. a. Hướng giải thuật b. Hướng logic c. Hướng ối tượng d. Hướng ệ quy e. Hướng mệnh lệnh
f. Hướng cấu trúc dữ liệu g. Hướng chức năng
37. Trường hợp nào nên dùng vector thay vì dùng deque?
a. Không có áp án nào úng
b. Cần chèn vào phần tử ở giữa của danh sách
c. Cần chèn ở ầu theo kiểu FIFO ( áp án trong ề) lOMoAR cPSD| 61548706
d. Cần chèn ở cả hai phía của danh sách
38.Các hàm quản lý bộ nhớ ộng trong C thuộc thư viện nào? a. dynamic b. mem c. stdio d. stdlib
39. Phương pháp “Lính canh” ược sử dụng ể làm gì?
a. Là 1 kỹ thuật gỡ rối
b. Là một kỹ thuật tăng hiệu năng chương trình
c. Là 1 kỹ thuật kiểm thử
d. Là một kỹ thuật tối ưu bộ nhớ
40. Kỹ thuật lính canh có thể áp dụng cho: a. Xâu ký tự
b. Cả 3 áp án trên ều úng c. Mảng d. Danh sách
41. Lý do nào khiến một số lập trình viên ưa thích việc viết chương trình ệ quy?
a. Sử dụng hiệu quả bộ nhớ Stack
b. Tốc ộ hoạt ộng của chương trình nhanh0
c. Lập trình ơn giản, dễ hiểu và dễ bảo trì ( áp án trong ề)
d. Không gian bộ nhớ sử dụng nhỏ gọn - Đáp án c úng
42. Chọn áp án SAI về hàm nội tuyến (Inline function)
a. Giúp tiết kiệm chi phí gọi hàm, cấp phát, giải phóng các biến trên stack
b. Có thể chứa các biến tĩnh
c. Là 1 loại hàm của C++, có từ khóa inline trước kiểu giá trị trả về của hàm
d. Thân hàm ược thay thế trực tiếp vào nơi hàm ược gọi
43. Chọn phát biểu sai: Khi ịnh nghĩa 1 hàm với ký hiệu & ở trước tên hàm thì: lOMoAR cPSD| 61548706
a. Nếu là hàm ịnh nghĩa phép toán, thì thứ tự thực hiện của phép toán ó là từ trái qua phải
b. Hàm trả về 1 tham chiếu
c. Hàm có thể ứng ở vế trái phép gán
d. Tất cả các phát biểu trên ều sai
44.Hàm nào dưới ây yêu cầu chương trình phải thoát ngay lập tức bất chấp sự
úng sai của iều kiện? a. abort(void); b. assert(int num);
c. Tất cả áp án còn lại ều sai d. exit(int num);
45. Chọn phát biểu úng về a năng hoá hàm (overloading) trong C++:
a. Các hàm dài có chứa nhiều lệnh xử lý
b. Một hàm chứa một hoặc nhiều hàm khác bên trong nó
c. Hai hoặc nhiều hàm có cùng tên nhưng khác số lượng tham số hoặc một số
tham số tương ứng có kiểu dữ liệu khác nhau
d. Hai hoặc nhiều hàm khác tên nhưng danh sách tham số giống nhau
46. Hãy chỉ ra cặp từ khoá ể bắt ngoại lệ trong C++ a. try … throw … b. try … catch … c. throw … catch … d. try … break …
47. Phát biểu nào sau ây là úng về phong cách lập trình tốt?
a. Hy sinh sự rõ ràng ể chương trình hiệu quả hơn
b. Không nên sử dụng các thủ tục ệ quy cho các cấu trúc dữ liệu ệ quy
c. Sử dụng nhiều biến tạm, trung gian
d. Để máy tính thực hiện các việc nặng nhọc (vd: tính toán)
48. Trong cú pháp của lambda, toán tử nào sau ây ược sử dụng ể bắt tất cả các biến
bên ngoài truy cập bằng tham chiếu? a. – b. * c. & lOMoAR cPSD| 61548706 d. &&
49. Các kỹ thuật viết code hiệu quả là:
a. Các kỹ thuật xây dựng thuật toán tối ưu
b. Các kỹ thuật khử ệ quy
c. Các kỹ thuật làm tăng tốc ộ (hiệu quả) thực hiện chương trình
d. Các kỹ thuật trình bày chương trình sao cho ơn giản, rõ ràng, dễ hiểu
50. Liệu macro nào có thể ược sử dụng ể phát hiện và báo ra các vi phạm trong mã
nguồn của chương trình? a. edom b. assert c. extern d. lbdl_min 1e-37 e. exception
51. Khi nói ến các khái niệm: (a)
các dòng nhập chuẩn nói chung và nó thường là từ bàn phím; (b)
các dòng xuất chuẩn nói chung và nó thường là xuất ra màn hình; (c)
dòng xuất lỗi chuẩn nói chung và nó cũng thường xuất trực tiếp ra màn hình.
Chúng ta ang ề cập lần lượt ến: a. stdout, stdin, stderr b. stdin, stdout, stdexp c. stdkey, stdcon, stderr d. stdin, stdout, stderr
52. Chọn áp án sai: Khi truy cập tới phần tử ở hàng i cột j của mảng 2 chiều M, ta có thể viết: a. i[M][j] b. *(*(M+i)+j) c. M[i][j] d. j[M][i]
53. Chọn phát biểu sai: Khi a năng hoá toán tử (overloading operator) lOMoAR cPSD| 61548706
a. Có thể dùng tham số có giá trị ngầm ịnh
b. Không ược ịnh nghĩa các toán tử mới: ví dụ @, $
c. Không ược ịnh nghĩa toán tử iều kiện ( ?: )
d. Phải có ít nhất 1 tham số (toán hạng) thuộc kiểu dữ liệu do người dùng ịnh nghĩa
54. Cho biết kết quả khi biên dịch và thực thi chương trình sau: #include using namespace std; void calc(int a, int b, int & c){ a = b * c; b = a *
c;// = b*b*c c = a * b;//b*c*b*b*c = 3^5 } int main(){ int x = 2, y =3;
calc(x, y, y); cout << x << " " << y; return 0; } a. 2 27 b. 2 18 c. 2 243 d. 2 3
55. Chọn kết quả ĐÚNG trên màn hình sau khi thực hiện chương trình sau ; #include void
foo(int *a, int b, int &c) { a+=5; b+=6; c+=7; lOMoAR cPSD| 61548706 } int main() { int a=5,b=6,c=7; foo(&b,c,a); printf(“%d %d %d”,a,b,c); } a. 12 6 7 b. Chương trình có lỗi c. 10 6 14 d. 5 6 14
56. Với oạn mã sau, nếu n=13 thì các phần tử ược ưa vào (push) ngăn xếp S theo thứ tự nào? while (n!= 0){ R = n % 2; S.push(R); n /= 2; } a. 1 , 3 , 6 b. 1 , 1 , 0 , 1 c. 6 , 3 , 1 d. 1 , 0 , 1 , 1
57. Cho oạn chương trình sau: void f1(int *p, int n, int k) { if(k < n) {
// vị trí cần iền các lệnh } lOMoAR cPSD| 61548706 } int main() { int n = 4, i, m[4] ={3,6,7,4}; f1(m,n-1,0); }
Biết rằng hàm f1 có nhiệm vụ ảo chiều mảng ầu vào (ví dụ 3,6,7,4 sẽ thành
4,7,6,3). Đoạn mã cần iền vào vị trí trống sẽ là: a. int temp = *(p+k-1);
*(p+k-1) = *(p+n-1-k); *(p+n-1- k) = temp; f1(p,n-1,k+1); b. int temp = *(p+k+1); *(p+k+1) = *(p+n-k); *(p+n- k) = temp; f1(p,n-1,k+1); c. int temp = *(p+k+1);
*(p+k+1) = *(p+n-1-k); *(p+n-1- k) = temp; f1(p,n-1,k+1); d. int temp = *(p+k); *(p+k) = *(p+n); *(p+n) = temp; f1(p,n-1,k+1);
58. Cho oạn mã ịnh nghĩa cấu trúc Box như sau. (*)
typedef struct { int capacity;} Box;
Đâu là lựa chọn chính xác ể ịnh nghĩa toán tử + cho hai ối tượng Box?
a. Box operator + (Box b1,Box b2) { Box tmp;
tmp. capacity = b1. capacity + b2. capacity; return tmp; } lOMoAR cPSD| 61548706
b. Box operator + (Box b1,Box b2) { return b1. capacity + b2. capacity; }
c. Toán tử + không ược a năng hoá.
d. void operator + (Box b1,Box b2) { Box tmp;
tmp. capacity = b1. capacity + b2. capacity; }
59. Kết quả của chương trình sau là gì: #include int main() { int i,j; for (i=1;i<4;i++) j=i; printf("\n%3d",j); return 0; } a. 4 b. 3 c. 1 2 3 4 d. Kết quả khác
60. #include using namespace std; void func(int x, bool state = false) { if (state== true ) {
cout << "State: true, x = " < } else {
cout << "State: false, x = " < } } int main() { func(120); return 0; lOMoAR cPSD| 61548706 } a. State: true, x = 60 b. State: false, x = 60 c. State: false, x = 120 d. State: true, x = 120
61. Kết quả chương trình sau là gì #include void (int * px, int * py){ int *z; z = px; px = py; py = z; } int main(){ int a=15, b=21; (&a,&b); printf("%d %d",a,b); return 0; }; a. 15 21
b. Không có kết quả do chương trình bị lỗi c. 21 15 d. Kết quả khác
62. Cho biết kết quả khi biên dịch và thực thi chương trình sau: #include using namespace std; int func(int a = 10, int b) { int c; c = a + b; return c; } int main() { cout << func(10); return 0; } a. 0 b. 20 lOMoAR cPSD| 61548706
c. Lỗi biên dịch chương trình d. 10
63. Xét oạn chương trình sau:
void superWriteVertical(int number){ if (number < 0) { cout << "-"; superWriteVertical(-number);
} else if (number < 10) cout << number; else {
superWriteVertical(number / 10); cout << number % 10; } }
Hỏi giá trị nào của biến number ược tính toán trực tiếp như trường hợp cơ sở (neo ệ quy)? a. number < 0 b. number < 10 c. number >10
d. number >= 0 && number < 10
64. Kết quả ầu ra của chương trình sau là gì? #include #include int main(){ int n = 12; char str[50] = ""; assert(n>=10); printf("output: %d\n",n); assert(str != NULL); printf("output: %s\n", str); } lOMoAR cPSD| 61548706
a. Hai dòng output: 12 và assertion error b. output: 12
c. Hai dòng output: 12 và output: d. error
65. Chọn kết quả úng trên màn hình #include…
inline int vd(int x, int y){ static int a
= 10; return (x > a || y) ? x – a + y++ : x + y; } int main(){ int m = 5, n = 8; printf(“%d”,vd(m,n)) ; } a. Chương trình có lỗi b. 13 c. 9 d. 3
66. Cho biết kết quả in ra màn hình của CT sau : #include int main() { int i = 10, j = 0; if (i || (j = i + 10)) printf("%d", j); return 0; } lOMoAR cPSD| 61548706 a. 1 b. 20 c. 0 d. 10
67. Cho biết kết quả của chương trình sau : #include jy int main() { char *s; s="Ngon Ngu Lap Trinh C++"; s+=8; cout<} a. Lap Trinh C++ b. Ngon Ngu c. Ngon Ngu Lap Trinh C++8 d. Ngon Ngu Lap Trinh C++
68. Kết quả ầu ra của chương trình sau là gì? #include #include void main(){ int n = 11; char str[50] = “program”;
assert(n >= 10); printf(“
output: %d\n”, n); assert(str != NULL); printf(“output: %s\n”, str); }