Cơ sở lập trình (NNLT C) 2026 University

Đề thi Cơ sở lập trình - Chương 1-5

20 questions
60 min
Answer key

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)

  1. 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

  2. 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

  3. 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

  4. 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)

  5. 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

  6. 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

  7. 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

  8. 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]

  9. 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

  10. 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 &

  11. 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

  12. 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

  13. 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

  14. 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];

  15. 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

  16. 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.

  17. 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.

  18. 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.

  19. 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).

  20. 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.