Font size
WorksheetsLTCB 99
Total questions: 99
Worksheet time: 50mins
Trong C, thuật toán được hiểu là gì?
Một ngôn ngữ lập trình
Một dãy hữu hạn các bước để giải bài toán
Một biến trong C
Một compiler
Tính chất nào KHÔNG phải của một thuật toán?
Tính đúng
Tính hiệu quả
Tính mơ hồ
Tính xác định
Khi nào nên dùng switch thay vì if-else?
Khi so sánh biểu thức số thực
Khi kiểm tra một biến trên nhiều giá trị rời rạc (biến nguyên/char)
Khi cần so sánh khoảng giá trị
Khi cần phép logic phức tạp
Cho đoạn mã: int a = 5; float x = a/2; Giá trị của x là bao nhiêu?
2.5
2.0
3.0
5.0
Hàm printf thuộc thư viện nào trong C?
math.h
stdio.h
conio.h
string.h
Cú pháp đúng để khai báo hàm trả về int, nhận hai đối số kiểu int là gì?
int f(int a, int b);
f(int a, int b) int;
int f(a,b) int a,b;
void f(int,int);
Lệnh continue trong vòng lặp có tác dụng gì?
Kết thúc vòng lặp hoàn toàn
Bỏ phần còn lại của lần lặp hiện tại và chuyển sang lần lặp tiếp
Dừng chương trình
Nhảy ra ngoài hàm
Khi truyền tham trị cho hàm, thay đổi trong hàm có ảnh hưởng tới biến gốc không?
Có luôn
Không
Có nếu là con trỏ
Có nếu là biến toàn cục
Toán tử % trong C dùng để làm gì?
Lấy phép chia nguyên
Lấy phần dư
Toán lũy thừa
Toán logic
Cho khai báo char s[] = "ABC"; Độ dài chuỗi (theo strlen) trả về là bao nhiêu?
4
3
0
2
Trong hệ 16-bit thường gặp, sizeof(int) bằng bao nhiêu byte?
1 byte
2 byte
4 byte
8 byte
Để đọc một chuỗi có khoảng trắng bằng scanf, dùng định dạng nào?
%s
%c
gets()
%[^ ]s
Trong biểu thức, '++a' và 'a++' khác nhau ở điểm nào?
Không khác
'++a' trả về giá trị sau khi tăng, 'a++' trả về trước khi tăng
'a++' nhanh hơn
'++a' chỉ cho số nguyên
Mục đích của #include <...> trong C là gì?
Khai báo prototype hàm
Chèn nội dung header (thư viện) vào file trước biên dịch
Ghi chú
Định nghĩa biến toàn cục
Biểu thức logic nào tương đương với !(a && b)?
!a && !b
!a || !b
a || b
a && b
Vòng do-while khác while ở điểm nào?
do-while kiểm tra điều kiện trước khi thực hiện
do-while thực hiện thân ít nhất một lần
while luôn chạy ít nhất một lần
Không khác
Hàm malloc trả về gì?
Giá trị int
Con trỏ tới vùng nhớ cấp phát
Kiểu float
Không có
Trong C, câu hỏi: "char *p = NULL; có an toàn để dereference ngay không?" Chọn đáp án đúng nhất.
An toàn
Không an toàn (sẽ lỗi)
Tùy compiler
Chỉ an toàn trên Windows
Trong mảng khai báo "int a[5];" tập chỉ số hợp lệ là gì?
1..5
0..4
0..5
-1..4
Câu lệnh switch trong C hỗ trợ những kiểu dữ liệu nào?
float
double
int và char (nguyên dạng rời rạc)
string trực tiếp
Khi muốn hàm thay đổi biến gốc bên ngoài, ta nên truyền gì?
Giá trị trực tiếp
Địa chỉ (con trỏ) của biến
Hằng
Không thể thay đổi
Giá trị trả về của hàm main() thường dùng để làm gì?
In ra màn hình
Trả trạng thái cho hệ điều hành
Tăng biến toàn cục
Không có ý nghĩa
Cú pháp khai báo mảng 2 chiều có 3 hàng và 4 cột trong C là gì?
int a[3][4];
int a[4][3];
int a(3,4);
int a[3,4];
Hàm strlen() trả về kiểu dữ liệu nào?
char
int
size_t
float
Chỉ thị "#define PI 3.14" là gì trong C?
Hằng (constant) được tiền xử lý
Biến toàn cục
Macro hàm
Định nghĩa hàm
Cho câu lệnh "a = b = 3;" giá trị của a là gì?
0
3
b
undefined
Bao giờ xuất hiện cảnh báo (warning) khi biên dịch?
Khi có lỗi cú pháp
Khi có nghi ngờ về kiểu nhưng vẫn biên dịch được
Khi chạy chương trình
Khi thiếu header
Lệnh printf("%d", 'A'); in ra số nào theo mã ASCII?
65
'A'
1
Lỗi
Biến toàn cục có phạm vi (scope) như thế nào?
Chỉ trong hàm khai báo
Toàn chương trình
Chỉ file hiện tại
Không xác định
Hàm chuẩn nào dùng để mở file văn bản trong C?
fopen
openfile
fileopen
fopen_s
Cho vòng lặp: "while(i>=0) printf("%d", i--);" nếu i là unsigned int ban đầu = 0, vòng lặp sẽ thế nào?
In 0 rồi dừng
Vô hạn (do underflow)
Báo lỗi biên dịch
Không in gì
Khi nào dùng con trỏ tới hàm (function pointer) trong C?
Khi cần gọi hàm động (callback) hoặc truyền hàm như tham số
Khi khai báo biến
Khi cần string
Không bao giờ
Biểu thức logic "a && b" chỉ đánh giá b trong trường hợp nào?
Luôn
Nếu a là true
Nếu a là false
Không bao giờ
Lệnh getch() thuộc thư viện nào (Turbo C / conio)?
stdio.h
conio.h
math.h
string.h
Giả sử int chiếm 4 byte. Cho mảng int a[] = {1,2,3}; biểu thức sizeof(a) trả về giá trị nào?
3
12
4
0
Trong C, ký tự kết thúc chuỗi (string terminator) là gì?
'\n'
'\0'
EOF
' ' (space)
Để so sánh hai chuỗi s1 và s2 trong C một cách đúng chuẩn thư viện, nên dùng hàm nào?
s1 == s2
strcmp(s1,s2)
strcmp(s1,s2)` (có dấu backtick)
equals(s1,s2)
Biến tạm (local variable) mặc định được lưu vùng nhớ nào?
Stack (ngăn xếp) thường
Heap
File
ROM
Cho khai báo int *p; trước khi gán p = 5; cần điều kiện nào?
Phải được khai báo
Trỏ tới địa chỉ hợp lệ (đã cấp phát hoặc địa chỉ biến)
NULL
Không cần gì
Trong các toán tử sau: '+', '*', '==', '&&', toán tử nào có độ ưu tiên cao nhất?
+
*
==
&&
So với vòng lặp tương đương, đệ quy (recursion) thường tốn thêm tài nguyên nào?
CPU ít hơn
Bộ nhớ stack nhiều hơn
Không khác
Không thực hiện được
Xét vòng for: for(i=0; i
Vòng chạy vô hạn
Không chạy lần nào
Biên dịch lỗi
Chạy 1 lần
Khi hàm được khai báo trả về kiểu non-void, khi nào cần dùng return?
Bất cứ khi nào
Để trả giá trị theo kiểu khai báo
Không cần
Chỉ trong main
Hàm fopen() trả NULL trong trường hợp nào?
Khi mở file thành công
Khi không mở được file (không tồn tại/không được phép)
Lỗi cú pháp
Dùng sai tên biến
sizeof(char) thông thường là bao nhiêu?
1 byte
2 byte
4 byte
Tùy hệ điều hành
Biểu thức a = (b>c) ? b : c; là ví dụ của toán tử nào trong C?
And
Ternary (?)
Elvis
Lambda
Trong C, enum cho phép điều gì?
Định nghĩa hằng số nguyên có tên
Định nghĩa hàm
Định nghĩa mảng
Định nghĩa con trỏ
Từ khóa break trong switch có tác dụng gì?
Kết thúc switch và nhảy ra ngoài
Kết thúc hàm
Tiếp tục
Không có tác dụng
Phát biểu "float có độ chính xác thấp hơn double" là đúng hay sai?
Đúng
Sai
Tùy compiler
Không xác định
Tên biến bắt đầu bằng chữ số trong C có hợp lệ không?
Hợp lệ
Không hợp lệ
Tùy ngôn ngữ
Chỉ trong C++
Khi gặp lỗi segmentation fault trong chương trình C, nguyên nhân phổ biến nhất là gì?
Thiếu header
Truy cập vùng nhớ không hợp lệ (lỗi con trỏ)
Thiếu main
Thiếu return
Chọn hàm an toàn để đọc chuỗi có khoảng trắng từ stdin, tránh tràn bộ đệm.
scanf("%s")
gets()
fgets()
putchar()
Muốn in một ký tự đơn ra màn hình trong C, nên dùng hàm nào?
printf("%d")
putchar()
puts()
fgets()
Với khai báo int arr[5]; nếu không khởi tạo, giá trị ban đầu của các phần tử thường là gì?
0
Giá trị rác (undefined) nếu không khởi tạo
-1
Lỗi biên dịch
Đối với người mới, thuật toán sắp xếp nào dễ code nhất để sắp xếp tăng dần?
QuickSort
MergeSort
Bubble sort / Selection sort
HeapSort
Với khai báo char *s = "Hello"; sau đó gán s[0] = 'h'; hành động này có an toàn không?
An toàn
Không an toàn (chuỗi literal thường read-only)
Chỉ an toàn trên Linux
Chỉ an toàn khi dùng gcc
Hai khai báo hàm void f(int a[]) và void f(int *a) có khác nhau không khi truyền mảng?
Khác
Không khác (về tham số hàm, mảng bị chuyển thành con trỏ)
Một cái lỗi
Chỉ một cái hợp lệ
Kết quả của printf("%4d", 12) là gì?
"12"
" 12" (2 khoảng trắng + 12)
"0012"
"12 "
Hàm rand() trong C trả về giá trị nằm trong khoảng nào (không chuẩn hóa)?
0..RAND_MAX
-RAND_MAX..RAND_MAX
0..1
-1..1
Trong phép toán con trỏ, với int *p thì p+1 sẽ dịch chuyển bao nhiêu byte?
Tăng 1 byte
Tăng sizeof(int) bytes
Tăng 1 bit
Không xác định
Trong for(i=0;i
Chạy chính xác
Có thể overflow và hành vi không xác định
Biên dịch lỗi
Tự động chuyển lên long
Mục đích chính của scanf là gì?
In ra file
Đọc dữ liệu từ file theo định dạng
Kiểm tra file tồn tại
Xóa file
Để giải bài USCLN (ước số chung lớn nhất) bằng đệ quy, thuật toán thường dùng là gì?
Euclid (lặp/đệ quy)
Sắp xếp
BFS
QuickSort
Với scanf("%d", &x); nếu người dùng nhập ký tự không phải số, điều gì xảy ra?
Giá trị không đổi, scanf trả số lượng items đọc
Giá trị không đổi, scanf trả 0
Gán 0
Chương trình crash
Khi dùng bộ nhớ động malloc, sau khi dùng cần gọi hàm nào để giải phóng?
free(ptr);
delete ptr;
close(ptr);
release(ptr)
Toán tử sizeof trong C trả về giá trị có kiểu dữ liệu nào?
int
size_t
long
char
Hàm strcpy(dest, src) thực hiện chức năng gì?
So sánh hai chuỗi
Sao chép src vào dest (không kiểm tra kích thước)
Nối chuỗi
Trả độ dài chuỗi
Cấu trúc while(1) { /*...*/ } là ví dụ của loại vòng lặp nào?
Vòng lặp điều kiện
Vòng lặp vô hạn
Vòng lặp do-while
Không hợp lệ
Trong C, một chương trình điển hình gồm mấy phần chính theo giáo trình truyền thống? Chọn đáp án phản ánh liệt kê ngắn gọn.
2 phần
4–6 phần (header, khai báo, function prototypes, định nghĩa hàm, main)
10
1
Lệnh return trong một hàm khai báo kiểu void có hợp lệ không?
Không
Có
Chỉ trong main
Chỉ nếu compiler cho phép
Trong ngữ cảnh con trỏ C, toán tử & và * nghĩa là gì?
& lấy địa chỉ, * dereference (lấy giá trị tại địa chỉ)
& là AND, * là nhân
Cú pháp sai
Không liên quan
Trong switch(x) { case 1: ... } nếu không có break ở cuối case thì điều gì xảy ra?
Chỉ một case chạy
Fall-through: các case sau sẽ tiếp tục thực hiện
Lỗi cú pháp
Dừng chương trình
Hàm malloc(0) có thể trả về gì theo chuẩn C?
NULL hoặc một con trỏ hợp lệ tùy implementation
Luôn NULL
Luôn con trỏ hợp lệ
Làm chương trình crash
printf("%s", NULL); có thể gây ra điều gì?
In "NULL"
Undefined behavior (có thể crash)
In rỗng
Biên dịch lỗi
int a = 5; int b = ++a + a++; giá trị của b là gì? Hãy chọn đáp án phản ánh thực tế phụ thuộc thứ tự đánh giá.
Xác định, một giá trị cụ thể
Undefined behavior (vi phạm việc sửa & đọc không sequence point)
11
10
char s[5]; scanf("%s", s); nếu người dùng nhập >4 ký tự thì kết quả nào sau đây đúng nhất?
Bị cắt bớt
Buffer overflow (ghi vượt) dẫn tới undefined behavior
Tự động mở rộng mảng
Lỗi biên dịch
Hàm qsort thuộc thư viện tiêu đề nào?
stdio.h
stdlib.h
string.h
math.h
Toán tử -> dùng để làm gì trong C?
Truy cập thành viên của struct qua con trỏ
Toán tử lui
Định nghĩa function pointer
Chỉ comment
Gọi fflush(stdin) có portable theo chuẩn C không?
Có
Không portable, undefined behavior theo chuẩn
Luôn an toàn
Lỗi biên dịch bắt buộc
Khi đặt từ khóa static trước biến trong một hàm, ý nghĩa là gì?
Biến cục bộ nhưng giữ giá trị giữa các lần gọi
Biến toàn cục
Lỗi
Biến volatile
printf("%p", (void*)p); sẽ in ra điều gì?
Giá trị int
Địa chỉ của con trỏ p
Giá trị tại p
Lỗi runtime
Trong các toán tử *, +, && thứ tự ưu tiên cao nhất thuộc về toán tử nào?
*
+
&&
Tất cả bằng nhau
close() trong C có tác dụng gì lên một file descriptor?
Mở file
Đóng file và flush buffers
Xóa file
Không làm gì
typedef dùng để làm gì trong C?
Tạo alias cho kiểu
Khai báo hàm
Định nghĩa macro
Định nghĩa namespace
strncpy(dest, src, n) khác strcpy ở điểm nào sau đây?
Không khác
strncpy giới hạn tối đa n ký tự (có thể không thêm '\0' nếu src dài)
strncpy luôn thêm dấu '\0' bất kể n
strncpy chỉ sao chép khi dest lớn hơn src
Chọn cú pháp đúng để truyền mảng 2 chiều có kích thước cột cố định vào hàm trong C:
void f(int a[][4])
void f(int a[4][])
void f(int a)
void f(int a[])
volatile qualifier được dùng khi nào trong C?
Khi biến có thể thay đổi ngoài luồng kiểm soát chương trình (ví dụ ISR/hardware)
Khi biến không đổi
Khi biến là hằng
Khi biến static
fprintf(stderr, "error"); sẽ in ra luồng nào?
stdout (luồng tiêu chuẩn)
stderr (luồng lỗi chuẩn)
Một file bất kỳ
Không in gì
sizeof của mảng trả kích thước toàn bộ mảng. Vậy biểu thức sizeof(a)/sizeof(a[0]) thường cho kết quả gì?
Kích thước một phần tử
Số phần tử của mảng
Số chiều của mảng
Giá trị rỗng
strncmp(s1,s2,n) trả về 0 trong trường hợp nào?
Khi hai chuỗi khác nhau
Khi giống nhau trong n ký tự đầu
Khi s1 dài hơn s2
Khi n=0 luôn false
getchar() trả EOF khi nào?
Khi hết file hoặc gặp lỗi I/O
Chỉ khi hết file
Luôn trả 0
Không bao giờ
assert(expr) dùng để làm gì trong quá trình phát triển?
Kiểm tra điều kiện debug, dừng chương trình nếu sai
Ghi log mọi giá trị
Ép buộc thực thi một nhánh
Thay thế hoàn toàn if
Memcpy khác memmove ở điểm nào?
memcpy an toàn khi vùng nhớ không overlap; memmove an toàn khi có overlap
Chúng giống hệt nhau
memcpy luôn chậm hơn
memmove xóa vùng nguồn
int main(void) và int main() khác nhau thế nào trong C hiện đại?
Không khác đáng kể; void cho thấy rõ không có tham số
Khác hoàn toàn về ngữ nghĩa
Một lỗi cú pháp
Chỉ main() là chuẩn
Trong debug, printf hữu ích nhưng nhược điểm chính là gì?
Luôn in sai
Có thể làm thay đổi thứ tự thực thi (timing) và che dấu lỗi
Không thể in con trỏ
Gây lỗi biên dịch
calloc(n, size) khác malloc ở điểm nào?
calloc cấp phát và zero-initialize bộ nhớ
calloc nhanh hơn
calloc trả về kiểu int
Không khác nhau
sizeof(char*) trên hệ 64-bit thường bằng bao nhiêu byte?
4
8
2
1
volatile sig_atomic_t flag; thường dùng cho trường hợp nào?
Biến chia sẻ giữa ISR và hàm main
Biến static trong file
Biến toàn cục cho I/O file
Không dùng trong thực tế
Nếu dùng printf với định dạng "%f" nhưng truyền một giá trị double, điều gì xảy ra theo chuẩn C?
In đúng vì float được promote thành double khi truyền
Nếu truyền float sẽ tự động promote thành double
Lỗi biên dịch ngay lập tức
Lỗi runtime chắc chắn
