Đề thi Cơ sở lập trình - Chương 1-5
Exam info
- Subject
- Cơ sở lập trình (NNLT C)
- Exam type
- University
- Questions
- 20
- Duration
- 60 min
- Year
- 2026
- Answers
- ✓ With explanations
Questions (20)
- Q 1.
Trong cấu trúc chương trình C, thành phần nào là bắt buộc PHẢI có?
- A.
Phần định nghĩa kiểu dữ liệu (typedef)
- B.
Phần khai báo biến ngoài (biến toàn cục)
- C.
Hàm main
- D.
Phần định nghĩa các hàm tự tạo
- A.
- Q 2.
Kiểu dữ liệu nào trong C được dùng để lưu trữ một ký tự đơn?
- A.
int
- B.
float
- C.
char
- D.
void
- A.
- Q 3.
Cho đoạn chương trình: int a=5, b=10; int c = (a*b/2)%4; Giá trị của c là bao nhiêu?
- A.
c = 0
- B.
c = 1
- C.
c = 2
- D.
c = 25
- A.
- Q 4.
Trong các toán tử sau, toán tử nào có độ ưu tiên CAO NHẤT?
- A.
+ (cộng)
- B.
* (nhân)
- C.
++ (tăng)
- D.
= (gán)
- A.
- Q 5.
Khi biểu thức điều kiện trong lệnh if đúng (có giá trị khác 0), điều gì xảy ra?
- A.
Chương trình thoát khỏi hàm main
- B.
Thực hiện khối lệnh trong if, sau đó bỏ qua khối lệnh trong else
- C.
Cả khối lệnh trong if và else đều được thực hiện
- D.
Thực hiện khối lệnh trong else
- A.
- Q 6.
Câu lệnh switch-case phù hợp nhất khi nào?
- A.
So sánh các giá trị trong một khoảng (a > x > b)
- B.
Cần so sánh bằng biểu thức với một số giá trị hằng rời rạc
- C.
Thực hiện vòng lặp với số lần chưa biết trước
- D.
Khi cần tính toán với số thực
- A.
- Q 7.
Sự khác biệt cơ bản giữa vòng lặp while và do-while là gì?
- A.
while lặp nhiều lần hơn do-while
- B.
do-while kiểm tra điều kiện trước khi thực hiện, while thực hiện rồi mới kiểm tra
- C.
do-while thực hiện khối lệnh ít nhất 1 lần, trong khi while có thể không thực hiện lần nào
- D.
Không có sự khác biệt nào
- A.
- Q 8.
Cho mảng int a[100]; Phần tử đầu tiên và phần tử cuối cùng của mảng được truy xuất bằng cách nào (giả sử mảng có n phần tử hiện tại)?
- A.
a[0] và a[100]
- B.
a[1] và a[100]
- C.
a[0] và a[n-1]
- D.
a[1] và a[n]
- A.
- Q 9.
Trong ngôn ngữ C, chuỗi ký tự được kết thúc bởi ký tự nào?
- A.
'\n'
- B.
'\0' (ký tự null)
- C.
' ' (dấu cách)
- D.
Không cần ký tự kết thúc
- A.
- Q 10.
Sự khác biệt giữa tham trị và tham biến trong hàm là gì?
- A.
Tham trị và tham biến hoàn toàn giống nhau
- B.
Tham trị cho phép thay đổi giá trị của tham số thực, tham biến thì không
- C.
Tham biến được khai báo với dấu & trước tên biến và cho phép thay đổi giá trị tham số thực; tham trị thì không thể thay đổi giá trị tham số thực
- D.
Tham trị được khai báo với dấu * còn tham biến khai báo với dấu &
- A.
- Q 11.
Trong một hàm đệ quy, phần nào là BẮT BUỘC phải có để tránh đệ quy vô hạn?
- A.
Phần đệ quy (gọi lại chính hàm đó)
- B.
Phần cơ sở (trường hợp dừng)
- C.
Câu lệnh printf
- D.
Biến static
- A.
- Q 12.
Lệnh break trong vòng lặp có tác dụng gì?
- A.
Bỏ qua phần lệnh còn lại của lần lặp hiện tại và chuyển sang lần lặp kế tiếp
- B.
Thoát khỏi vòng lặp hoàn toàn (bất chấp điều kiện lặp còn đúng)
- C.
Kết thúc hàm và trả về giá trị
- D.
Bắt đầu vòng lặp mới
- A.
- Q 13.
Thư viện nào trong C chứa các hàm vào/ra chuẩn như printf() và scanf()?
- A.
math.h
- B.
conio.h
- C.
stdio.h
- D.
string.h
- A.
- Q 14.
Khi khai báo một mảng kiểu char để lưu chuỗi có tối đa 20 ký tự, ta nên khai báo như thế nào?
- A.
char s[20];
- B.
char s[21];
- C.
char s[19];
- D.
string s[20];
- A.
- Q 15.
Hàm strlen(str) trong thư viện string.h có chức năng gì?
- A.
Sao chép chuỗi str sang chuỗi khác
- B.
So sánh hai chuỗi
- C.
Xác định chiều dài của chuỗi str (không tính ký tự kết thúc)
- D.
Đảo ngược chuỗi str
- A.
- Q 16.
Viết hàm kiểm tra một số nguyên n có phải là số nguyên tố hay không. Trong đó: hàm trả về 1 nếu n là số nguyên tố, trả về 0 nếu không phải. Lưu ý: số nguyên tố là số tự nhiên lớn hơn 1, chỉ có 2 ước số là 1 và chính nó. Hãy viết mã nguồn hoàn chỉnh cho hàm.
- Q 17.
Viết hàm tìm giá trị lớn nhất trong mảng một chiều các số nguyên. Hàm có prototype: int timMax(int a[], int n), trong đó a là mảng số nguyên, n là số phần tử. Trả về giá trị lớn nhất trong mảng. Hãy viết mã nguồn cho hàm này và giải thích thuật toán.
- Q 18.
Viết hàm phân loại học lực dựa trên điểm trung bình (DTB) nhập vào từ bàn phím theo công thức sau: DTB >= 8.0: 'Gioi'; 6.5 <= DTB < 8.0: 'Kha'; 5.0 <= DTB < 6.5: 'Trung binh'; DTB < 5.0: 'Yeu'. Hãy viết chương trình C hoàn chỉnh sử dụng cấu trúc if-else lồng nhau, cho biết kết quả phân loại ra màn hình.
- Q 19.
Viết hàm đệ quy tính giai thừa của một số nguyên không âm n. Yêu cầu: xác định rõ phần cơ sở và phần đệ quy của bài toán. Cho biết kết quả của hàm khi gọi tinhGiaiThua(5).
- Q 20.
Viết chương trình C cho phép nhập một chuỗi ký tự s từ bàn phím (tối đa 100 ký tự), đếm và in ra số lượng ký tự là chữ số ('0' đến '9') xuất hiện trong chuỗi. Ví dụ: s = "Chieu ngay 23 thang 04 nam 2025" thì kết quả là 8.
Answers and explanations are in mode.