Skip to content
Tài Liệu Trọn Đời - Thư viện tài liệu học tập - 5

Blog Cá Nhân | Chia Sẻ Tài Liệu Học Tập Miễn Phí

    • Trang chủ
      • Về chúng tôi
      • Quy định sử dụng
      • Miễn trừ trách nhiệm
      • Bản quyền & Khiếu nại
    • Đáp án
    • Góc học tập
      • Toán học
      • Vật lý
      • Hóa học
      • Tiếng Anh
    • Trắc nghiệm
      • Question – Answer Quiz
      • Trắc nghiệm Tiếng Anh
      • Trắc nghiệm Đại học
      • Trắc nghiệm THPT
      • Trắc nghiệm THCS
      • Trắc nghiệm Tập huấn – Bồi dưỡng
    • Liên hệ
    • Sitemap
    • Trang chủ
      • Về chúng tôi
      • Quy định sử dụng
      • Miễn trừ trách nhiệm
      • Bản quyền & Khiếu nại
    • Đáp án
    • Góc học tập
      • Toán học
      • Vật lý
      • Hóa học
      • Tiếng Anh
    • Trắc nghiệm
      • Question – Answer Quiz
      • Trắc nghiệm Tiếng Anh
      • Trắc nghiệm Đại học
      • Trắc nghiệm THPT
      • Trắc nghiệm THCS
      • Trắc nghiệm Tập huấn – Bồi dưỡng
    • Liên hệ
    • Sitemap
    Tài Liệu Trọn Đời - Thư viện tài liệu học tập - 5

    Blog Cá Nhân | Chia Sẻ Tài Liệu Học Tập Miễn Phí

    Trang chủ » Trắc nghiệm Đại học » 150+ câu hỏi trắc nghiệm lập trình c online có đáp án

    Trắc nghiệm Đại học online

    150+ câu hỏi trắc nghiệm lập trình c online có đáp án

    Ngày cập nhật: 30/07/2025

    ⚠️ Đọc lưu ý và miễn trừ trách nhiệm trước khi bắt đầu: Các câu hỏi và đáp án trong bộ trắc nghiệm này chỉ mang tính chất tham khảo, hỗ trợ học tập và ôn luyện. Đây KHÔNG PHẢI là đề thi chính thức, không đại diện cho bất kỳ tài liệu chuẩn hóa hay kiểm tra chứng chỉ nào từ các cơ quan giáo dục hay tổ chức cấp chứng chỉ chuyên môn. Website không chịu bất kỳ trách nhiệm nào liên quan đến độ chính xác của nội dung hoặc các quyết định được đưa ra dựa trên kết quả làm bài trắc nghiệm.

    Chào mừng bạn đến với bộ 150+ câu hỏi trắc nghiệm lập trình c online có đáp án. Đây là một công cụ hữu ích để bạn kiểm tra mức độ hiểu biết và ghi nhớ nội dung. Vui lòng lựa chọn phần câu hỏi phù hợp bên dưới để khởi động quá trình ôn luyện. Hãy tập trung và hoàn thành bài thật tốt nhé!

    1. Trong C, một hàm `void` là gì?

    A. Một hàm không nhận bất kỳ tham số nào.
    B. Một hàm không trả về bất kỳ giá trị nào.
    C. Một hàm chỉ có thể được gọi một lần.
    D. Một hàm luôn trả về 0.

    2. Hàm nào được sử dụng để in ra màn hình trong C?

    A. print()
    B. display()
    C. printf()
    D. show()

    3. Trong C, một biến static được khai báo bên trong một hàm có ý nghĩa gì?

    A. Biến chỉ có thể được truy cập trong hàm đó.
    B. Biến được lưu trữ trong bộ nhớ động.
    C. Biến giữ giá trị của nó giữa các lần gọi hàm.
    D. Biến không thể thay đổi giá trị.

    4. Đâu là cách khai báo một mảng các con trỏ ký tự trong C?

    A. char **arr;
    B. char *arr[];
    C. char arr*[];
    D. char arr[][];

    5. Chỉ thị tiền xử lý nào được sử dụng để bao gồm một tệp tiêu đề trong C?

    A. #import
    B. #include
    C. #using
    D. #add

    6. Sự khác biệt chính giữa `struct` và `union` trong C là gì?

    A. `struct` lưu trữ các thành viên ở các vị trí bộ nhớ riêng biệt, trong khi `union` chia sẻ cùng một vị trí bộ nhớ.
    B. `struct` chỉ có thể chứa các biến kiểu nguyên thủy, trong khi `union` có thể chứa bất kỳ kiểu dữ liệu nào.
    C. `struct` được sử dụng cho các hàm, trong khi `union` được sử dụng cho các biến.
    D. Không có sự khác biệt, chúng là các từ khóa thay thế cho nhau.

    7. Trong C, làm thế nào để truyền một mảng vào một hàm sao cho hàm có thể sửa đổi mảng gốc?

    A. Truyền mảng theo giá trị.
    B. Truyền một bản sao của mảng.
    C. Truyền một con trỏ đến mảng.
    D. Không thể sửa đổi mảng gốc trong hàm.

    8. Điều gì xảy ra nếu bạn cố gắng truy cập một phần tử mảng vượt quá giới hạn trong C?

    A. Một lỗi biên dịch sẽ xảy ra.
    B. Chương trình sẽ dừng thực thi.
    C. Hành vi không xác định (undefined behavior) có thể xảy ra.
    D. Mảng sẽ tự động mở rộng.

    9. Trong C, sự khác biệt giữa `const char* p` và `char* const p` là gì?

    A. `const char* p`: con trỏ không đổi, `char* const p`: dữ liệu không đổi.
    B. `const char* p`: dữ liệu không đổi, `char* const p`: con trỏ không đổi.
    C. Chúng hoàn toàn giống nhau.
    D. Không có sự khác biệt, cả hai đều sai cú pháp.

    10. Hàm nào được sử dụng để ghi dữ liệu vào một tệp trong C?

    A. read()
    B. write()
    C. fwrite()
    D. fread()

    11. Trong C, tham số nào sau đây của hàm `main()` là bắt buộc?

    A. int argc
    B. char *argv[]
    C. Không có tham số nào là bắt buộc
    D. void

    12. Trong C, kiểu dữ liệu nào được sử dụng để biểu diễn giá trị logic (true/false)?

    A. bool
    B. logical
    C. int (0 hoặc 1)
    D. char (‘t’ hoặc ‘f’)

    13. Hàm nào được sử dụng để đọc một dòng từ đầu vào chuẩn (stdin) trong C?

    A. scanf()
    B. gets()
    C. fgets()
    D. readline()

    14. Hàm nào dùng để so sánh hai chuỗi trong C?

    A. compare()
    B. strcmp()
    C. stringCompare()
    D. equals()

    15. Lệnh nào sau đây được sử dụng để thoát khỏi một vòng lặp trong C?

    A. continue
    B. exit
    C. break
    D. return

    16. Trong C, `NULL` là gì?

    A. Một kiểu dữ liệu.
    B. Một macro định nghĩa một con trỏ null.
    C. Một hàm trả về 0.
    D. Một từ khóa để kết thúc chương trình.

    17. Trong C, `typedef` được sử dụng để làm gì?

    A. Định nghĩa một hàm mới.
    B. Tạo một bí danh cho một kiểu dữ liệu hiện có.
    C. Khai báo một biến toàn cục.
    D. Bao gồm một tệp tiêu đề.

    18. Trong C, tiền xử lý (preprocessor) là gì?

    A. Một phần của trình biên dịch để tối ưu hóa mã.
    B. Một chương trình chạy trước khi biên dịch để xử lý các chỉ thị.
    C. Một công cụ để gỡ lỗi mã.
    D. Một thư viện chứa các hàm toán học.

    19. Toán tử nào được sử dụng để lấy địa chỉ của một biến trong C?

    A. *
    B. &
    C. ->
    D. .

    20. Trong C, chức năng của `fflush(stdin)` là gì?

    A. Xóa bộ nhớ đã cấp phát.
    B. Xóa bộ đệm đầu ra.
    C. Xóa bộ đệm đầu vào.
    D. Đóng một tệp.

    21. Trong C, một con trỏ là gì?

    A. Một biến lưu trữ một giá trị số nguyên.
    B. Một biến lưu trữ địa chỉ của một biến khác.
    C. Một kiểu dữ liệu đặc biệt cho ký tự.
    D. Một hàm không trả về giá trị.

    22. Hàm nào được sử dụng để cấp phát bộ nhớ động trong C?

    A. allocate()
    B. malloc()
    C. create()
    D. new()

    23. Toán tử nào được sử dụng để truy cập các thành viên của một cấu trúc thông qua một con trỏ đến cấu trúc đó?

    A. .
    B. &
    C. *
    D. ->

    24. Để giải phóng bộ nhớ đã được cấp phát động trong C, hàm nào được sử dụng?

    A. release()
    B. free()
    C. deallocate()
    D. delete()

    25. Kiểu dữ liệu nào không có trong C?

    A. int
    B. char
    C. float
    D. string

    26. Hàm nào được sử dụng để đọc dữ liệu từ một tệp trong C?

    A. output()
    B. input()
    C. fread()
    D. fwrite()

    27. Toán tử `sizeof` trong C trả về gì?

    A. Số lượng biến trong một mảng.
    B. Kích thước của một biến hoặc kiểu dữ liệu tính bằng byte.
    C. Địa chỉ của một biến.
    D. Giá trị của một biến.

    28. Trong C, kiểu dữ liệu nào được sử dụng để lưu trữ một ký tự duy nhất?

    A. int
    B. float
    C. char
    D. string

    29. Cấu trúc điều khiển nào cho phép thực hiện một khối lệnh nhiều lần dựa trên một điều kiện?

    A. if
    B. switch
    C. for
    D. typedef

    30. Cú pháp nào sau đây đúng để định nghĩa một macro trong C?

    A. define macro_name value
    B. #define macro_name value
    C. macro macro_name = value;
    D. const macro_name = value;

    31. Trong C, hàm `fprintf()` được sử dụng để làm gì?

    A. Đọc dữ liệu từ một file
    B. Ghi dữ liệu vào một file
    C. Định dạng dữ liệu để in ra màn hình
    D. Đóng một file

    32. Hàm `fopen()` trả về giá trị gì khi mở file không thành công?

    A. 0
    B. 1
    C. NULL
    D. -1

    33. Trong C, toán tử `sizeof` trả về cái gì?

    A. Địa chỉ của một biến
    B. Kích thước của một biến hoặc kiểu dữ liệu tính bằng byte
    C. Giá trị của một biến
    D. Số lượng phần tử trong một mảng

    34. Cú pháp nào sau đây đúng để khai báo một cấu trúc (struct) trong C?

    A. structure MyStruct { int x; };
    B. struct MyStruct { int x; };
    C. class MyStruct { int x; };
    D. typedef MyStruct { int x; };

    35. Cấu trúc điều khiển nào sau đây cho phép thực thi một khối lệnh nhiều lần dựa trên một điều kiện?

    A. if
    B. switch
    C. for
    D. else

    36. Trong C, một hàm `static` có ý nghĩa gì?

    A. Hàm chỉ có thể được gọi một lần duy nhất
    B. Hàm được lưu trữ trong bộ nhớ tĩnh
    C. Hàm chỉ có thể được truy cập trong file mà nó được định nghĩa
    D. Hàm không thể nhận bất kỳ tham số nào

    37. Trong C, một mảng là gì?

    A. Một kiểu dữ liệu nguyên thủy
    B. Một tập hợp các biến có kiểu dữ liệu khác nhau
    C. Một tập hợp các biến có cùng kiểu dữ liệu
    D. Một con trỏ

    38. Hàm nào được sử dụng để cấp phát bộ nhớ động trong C?

    A. free()
    B. malloc()
    C. sizeof()
    D. typedef

    39. Trong C, tiền xử lý là gì?

    A. Một giai đoạn trong quá trình biên dịch, trong đó các chỉ thị tiền xử lý được thực hiện
    B. Một cách để tối ưu hóa mã
    C. Một thư viện chuẩn của C
    D. Một công cụ để gỡ lỗi chương trình

    40. Trong C, vòng lặp vô hạn có thể được tạo ra bằng cách nào?

    A. for (i = 0; i < 10; i–)
    B. while (1)
    C. if (1)
    D. switch (1)

    41. Chỉ thị tiền xử lý `#include` có chức năng gì trong C?

    A. Định nghĩa một macro
    B. Bao gồm nội dung của một file header vào trong chương trình
    C. Khai báo một biến toàn cục
    D. Thực hiện một phép tính số học

    42. Hàm nào được sử dụng để so sánh hai chuỗi trong C?

    A. strcmp()
    B. strcpy()
    C. strcat()
    D. strlen()

    43. Đâu là sự khác biệt giữa `const char*` và `char const*` trong C?

    A. Không có sự khác biệt, chúng hoàn toàn tương đương
    B. `const char*` là một con trỏ không đổi đến một ký tự, trong khi `char const*` là một con trỏ đến một ký tự không đổi
    C. `char const*` là một con trỏ không đổi đến một ký tự, trong khi `const char*` là một con trỏ đến một ký tự không đổi
    D. `const char*` chỉ có thể sử dụng trong C++, còn `char const*` trong C

    44. Trong ngôn ngữ lập trình C, kiểu dữ liệu nào được sử dụng để lưu trữ một ký tự duy nhất?

    A. float
    B. int
    C. char
    D. double

    45. Định nghĩa nào sau đây mô tả đúng nhất về một biến toàn cục trong C?

    A. Biến chỉ có thể được truy cập trong hàm mà nó được khai báo
    B. Biến được khai báo bên trong một khối lệnh
    C. Biến được khai báo bên ngoài tất cả các hàm và có thể được truy cập từ bất kỳ hàm nào trong chương trình
    D. Biến chỉ có thể được sử dụng trong một file duy nhất

    46. Trong C, hàm `atoi()` dùng để làm gì?

    A. Chuyển đổi một chuỗi thành một số nguyên
    B. Chuyển đổi một số nguyên thành một chuỗi
    C. Chuyển đổi một ký tự thành mã ASCII
    D. Chuyển đổi một số thực thành một số nguyên

    47. Điểm khác biệt chính giữa `while` và `do…while` trong C là gì?

    A. Không có sự khác biệt, chúng hoàn toàn giống nhau
    B. `while` luôn thực hiện ít nhất một lần, trong khi `do…while` thì không
    C. `do…while` luôn thực hiện ít nhất một lần, trong khi `while` thì không
    D. `while` chỉ có thể sử dụng với số nguyên, còn `do…while` thì không

    48. Trong C, `typedef` được sử dụng để làm gì?

    A. Định nghĩa một hàm mới
    B. Tạo một biến mới
    C. Đặt một tên khác cho một kiểu dữ liệu đã tồn tại
    D. Khai báo một biến toàn cục

    49. Toán tử nào trong C được sử dụng để lấy địa chỉ của một biến?

    A. *
    B. &
    C. ->
    D. .

    50. Đâu là cách khai báo một con trỏ trong C?

    A. int variable;
    B. int *ptr;
    C. int &ref;
    D. int array[]

    51. Trong C, `volatile` keyword dùng để làm gì?

    A. Để khai báo một biến không thể thay đổi
    B. Để báo cho trình biên dịch biết rằng giá trị của một biến có thể bị thay đổi bởi các yếu tố bên ngoài chương trình
    C. Để tối ưu hóa mã
    D. Để khai báo một biến chỉ có thể truy cập trong một hàm

    52. Hàm nào sau đây được sử dụng để in ra màn hình trong C?

    A. scanf()
    B. printf()
    C. gets()
    D. puts()

    53. Sự khác biệt chính giữa `struct` và `union` trong C là gì?

    A. Không có sự khác biệt, chúng hoàn toàn giống nhau
    B. Các thành viên của `struct` chia sẻ cùng một vùng nhớ, trong khi các thành viên của `union` có vùng nhớ riêng
    C. Các thành viên của `union` chia sẻ cùng một vùng nhớ, trong khi các thành viên của `struct` có vùng nhớ riêng
    D. `struct` chỉ có thể chứa các biến kiểu `int`, còn `union` thì không

    54. Đâu là mục đích chính của việc sử dụng các hàm trong lập trình C?

    A. Để làm cho code khó đọc hơn
    B. Để giảm kích thước của chương trình
    C. Để chia chương trình thành các phần nhỏ hơn, dễ quản lý và tái sử dụng
    D. Để tăng tốc độ thực thi của chương trình

    55. Hàm nào trong thư viện chuẩn của C được sử dụng để đọc một dòng từ input?

    A. scanf()
    B. printf()
    C. gets()
    D. getchar()

    56. Đâu là cách khai báo đúng một mảng các con trỏ đến kiểu `int` trong C?

    A. int *arr[];
    B. int **arr;
    C. int arr*[];
    D. int &arr[];

    57. Đâu là cách truyền tham số cho hàm trong C để hàm có thể thay đổi giá trị của biến gốc?

    A. Truyền bằng giá trị
    B. Truyền bằng tham chiếu
    C. Truyền bằng con trỏ
    D. Không có cách nào

    58. Trong C, một `union` là gì?

    A. Một kiểu dữ liệu để lưu trữ nhiều giá trị khác nhau tại các địa chỉ bộ nhớ khác nhau
    B. Một kiểu dữ liệu để lưu trữ nhiều giá trị khác nhau tại cùng một địa chỉ bộ nhớ
    C. Một cách để tạo các hàm đa hình
    D. Một kiểu dữ liệu để tạo mảng động

    59. Hàm nào được sử dụng để giải phóng bộ nhớ đã được cấp phát động trong C?

    A. malloc()
    B. calloc()
    C. free()
    D. realloc()

    60. Trong C, hàm `exit()` được sử dụng để làm gì?

    A. Kết thúc một vòng lặp
    B. Thoát khỏi chương trình
    C. Bắt đầu một chương trình mới
    D. Đóng một file

    61. Trong C, ý nghĩa của `#include ` là gì?

    A. Khai báo một hàm tên là stdio
    B. Nhúng nội dung của file stdio.h vào chương trình
    C. Biên dịch file stdio.h
    D. Không có ý nghĩa gì, đây chỉ là comment

    62. Trong C, kiểu dữ liệu nào phù hợp nhất để lưu trữ địa chỉ bộ nhớ?

    A. int
    B. float
    C. char
    D. pointer

    63. Sự khác biệt giữa `while` và `do…while` trong C là gì?

    A. `while` kiểm tra điều kiện trước khi thực hiện vòng lặp, `do…while` kiểm tra sau khi thực hiện
    B. `while` chỉ dùng cho số, `do…while` dùng cho chuỗi
    C. `while` không cần điều kiện, `do…while` bắt buộc phải có
    D. Không có sự khác biệt, chúng hoàn toàn giống nhau

    64. Thế nào là đệ quy trong lập trình C?

    A. Một hàm gọi chính nó
    B. Một hàm gọi một hàm khác
    C. Một biến được khai báo nhiều lần
    D. Một cấu trúc dữ liệu phức tạp

    65. Trong C, hàm nào được sử dụng để in dữ liệu ra màn hình?

    A. scanf()
    B. printf()
    C. gets()
    D. puts()

    66. Sự khác biệt chính giữa `struct` và `union` trong C là gì?

    A. `struct` lưu trữ các thành viên ở các vùng nhớ khác nhau, `union` chia sẻ cùng một vùng nhớ
    B. `struct` chỉ có thể chứa các biến kiểu nguyên, `union` có thể chứa mọi kiểu dữ liệu
    C. `struct` được sử dụng cho các hàm, `union` được sử dụng cho các biến
    D. Không có sự khác biệt, chúng hoàn toàn giống nhau

    67. Trong C, mục đích của việc sử dụng `typedef` là gì?

    A. Định nghĩa một kiểu dữ liệu mới
    B. Tạo ra một bí danh cho một kiểu dữ liệu đã tồn tại
    C. Khai báo một biến toàn cục
    D. Khai báo một hàm

    68. Trong C, kiểu dữ liệu `void` thường được sử dụng để làm gì?

    A. Chỉ định một biến không có kiểu
    B. Chỉ định một hàm không trả về giá trị
    C. Chỉ định một con trỏ không kiểu
    D. Tất cả các đáp án trên

    69. Trong C, làm thế nào để truyền một mảng vào một hàm sao cho hàm có thể thay đổi nội dung của mảng?

    A. Truyền mảng theo giá trị
    B. Truyền mảng theo tham chiếu (sử dụng con trỏ)
    C. Không thể thay đổi nội dung của mảng khi truyền vào hàm
    D. Sử dụng biến toàn cục

    70. Toán tử nào sau đây được sử dụng để gán giá trị trong C?

    A. ==
    B. =
    C. !=
    D. >=

    71. Trong C, hàm `atoi()` dùng để làm gì?

    A. Chuyển đổi một số nguyên thành chuỗi
    B. Chuyển đổi một chuỗi thành một số nguyên
    C. Chuyển đổi một ký tự thành mã ASCII
    D. Chuyển đổi một chuỗi thành chữ hoa

    72. Trong C, hàm nào được sử dụng để cấp phát bộ nhớ động?

    A. free()
    B. malloc()
    C. sizeof()
    D. realloc()

    73. Trong C, hàm nào được sử dụng để giải phóng bộ nhớ đã được cấp phát bởi `malloc()`?

    A. allocate()
    B. deallocate()
    C. free()
    D. release()

    74. Lệnh `#define` được sử dụng để làm gì trong C?

    A. Khai báo một biến
    B. Định nghĩa một macro
    C. Khai báo một hàm
    D. Nhúng một file header

    75. Hàm `strcmp()` được sử dụng để làm gì trong C?

    A. Sao chép một chuỗi
    B. Nối hai chuỗi
    C. So sánh hai chuỗi
    D. Tìm kiếm một chuỗi con trong một chuỗi

    76. Trong ngôn ngữ lập trình C, kiểu dữ liệu nào được sử dụng để lưu trữ một ký tự?

    A. float
    B. int
    C. char
    D. double

    77. Trong C, điều gì xảy ra nếu bạn cố gắng truy cập một phần tử mảng vượt quá kích thước của mảng?

    A. Chương trình sẽ báo lỗi biên dịch
    B. Chương trình sẽ báo lỗi khi chạy
    C. Chương trình có thể hoạt động không ổn định hoặc bị crash
    D. Không có gì xảy ra, chương trình vẫn chạy bình thường

    78. Cấu trúc điều khiển nào cho phép thực hiện một khối lệnh nhiều lần trong C?

    A. if
    B. switch
    C. for
    D. else

    79. Trong C, hàm `fopen()` trả về giá trị gì khi mở file không thành công?

    A. 1
    B. 0
    C. NULL
    D. -1

    80. Trong C, khi nào nên sử dụng con trỏ hàm?

    A. Khi cần truyền một hàm như một tham số cho một hàm khác
    B. Khi cần truy cập một biến toàn cục
    C. Khi cần khai báo một mảng
    D. Khi cần sử dụng cấu trúc

    81. Điều gì sẽ xảy ra nếu bạn chia một số cho 0 trong C?

    A. Chương trình sẽ báo lỗi biên dịch
    B. Chương trình sẽ tiếp tục chạy với kết quả là 0
    C. Chương trình sẽ bị dừng và báo lỗi runtime
    D. Không có gì xảy ra, kết quả sẽ là vô cực

    82. Toán tử nào được sử dụng để lấy địa chỉ của một biến trong C?

    A. *
    B. &
    C. ->
    D. .

    83. Đâu là cách khai báo một mảng số nguyên có 5 phần tử trong C?

    A. int array[];
    B. int array[5];
    C. array int[5];
    D. int array[n];

    84. Hàm nào sau đây được sử dụng để đọc một dòng từ input chuẩn trong C?

    A. scanf
    B. printf
    C. gets
    D. fscan

    85. Từ khóa nào được sử dụng để kết thúc một vòng lặp ngay lập tức trong C?

    A. continue
    B. exit
    C. return
    D. break

    86. Trong C, `const` được sử dụng để làm gì?

    A. Khai báo một biến hằng
    B. Khai báo một biến động
    C. Khai báo một hàm inline
    D. Khai báo một cấu trúc

    87. Biến static trong C có đặc điểm gì?

    A. Biến chỉ có thể được truy cập trong hàm mà nó được khai báo
    B. Biến được lưu trữ trong bộ nhớ heap
    C. Biến giữ giá trị của nó giữa các lần gọi hàm
    D. Biến tự động bị hủy khi hàm kết thúc

    88. Trong C, ý nghĩa của từ khóa `volatile` là gì?

    A. Biến chỉ có thể được truy cập bởi một thread
    B. Biến có thể thay đổi bởi các yếu tố bên ngoài chương trình
    C. Biến được lưu trữ trong bộ nhớ cache
    D. Biến không thể thay đổi giá trị

    89. Đâu là cách khai báo một con trỏ tới một biến kiểu số nguyên trong C?

    A. int ptr;
    B. int *ptr;
    C. *int ptr;
    D. ptr int;

    90. Trong C, tiền xử lý (preprocessor) được thực hiện trước giai đoạn nào?

    A. Biên dịch (compilation)
    B. Liên kết (linking)
    C. Thực thi (execution)
    D. Gỡ lỗi (debugging)

    91. Trong C, cấu trúc dữ liệu nào hoạt động theo nguyên tắc LIFO (Last In, First Out)?

    A. Queue (Hàng đợi)
    B. Linked List (Danh sách liên kết)
    C. Stack (Ngăn xếp)
    D. Tree (Cây)

    92. Từ khóa `static` có ý nghĩa gì khi được sử dụng bên trong một hàm trong C?

    A. Biến chỉ có thể được truy cập từ hàm đó.
    B. Biến được lưu trữ trong bộ nhớ động.
    C. Biến được khởi tạo mỗi khi hàm được gọi.
    D. Biến giữ giá trị của nó giữa các lần gọi hàm.

    93. Chức năng của hàm `fprintf()` trong C là gì?

    A. Đọc dữ liệu từ tệp.
    B. Ghi dữ liệu đã định dạng vào tệp.
    C. Đọc dữ liệu đã định dạng từ bàn phím.
    D. Ghi dữ liệu vào màn hình.

    94. Trong C, mục đích của tiền xử lý (preprocessor) là gì?

    A. Để biên dịch mã C thành mã máy.
    B. Để tối ưu hóa mã C.
    C. Để thực hiện các thao tác trước khi biên dịch, như bao gồm các tệp tiêu đề và thay thế macro.
    D. Để gỡ lỗi mã C.

    95. Trong C, sự khác biệt giữa `#include ` và `#include “myheader.h”` là gì?

    A. Không có sự khác biệt, chúng hoàn toàn giống nhau.
    B. `#include ` được sử dụng cho các tệp tiêu đề do người dùng định nghĩa, trong khi `#include “myheader.h”` được sử dụng cho các tệp tiêu đề hệ thống.
    C. `#include ` tìm kiếm tệp tiêu đề trong các thư mục hệ thống, trong khi `#include “myheader.h”` tìm kiếm trong thư mục hiện tại trước.
    D. `#include ` chỉ có thể được sử dụng trong các hàm, trong khi `#include “myheader.h”` có thể được sử dụng ở bất kỳ đâu.

    96. Sự khác biệt giữa `const int *p` và `int * const p` là gì?

    A. `const int *p` là một con trỏ không đổi đến một số nguyên, còn `int * const p` là một con trỏ đến một số nguyên không đổi.
    B. `const int *p` là một con trỏ đến một số nguyên không đổi, còn `int * const p` là một con trỏ không đổi đến một số nguyên.
    C. Cả hai đều giống nhau.
    D. Không có sự khác biệt về cú pháp.

    97. Đâu là cách khai báo một mảng các con trỏ kiểu int trong C?

    A. int arr[];
    B. int *arr[];
    C. int **arr;
    D. int arr*;

    98. Trong C, kiểu dữ liệu nào được sử dụng để lưu trữ địa chỉ của một biến?

    A. int
    B. float
    C. char
    D. pointer

    99. Trong C, hàm `atoi()` dùng để làm gì?

    A. Chuyển đổi một số nguyên thành một chuỗi.
    B. Chuyển đổi một chuỗi thành một số nguyên.
    C. Chuyển đổi một số thực thành một số nguyên.
    D. Chuyển đổi một ký tự thành một số nguyên.

    100. Trong C, vòng lặp `do…while` khác với vòng lặp `while` như thế nào?

    A. Vòng lặp `while` luôn thực hiện ít nhất một lần, trong khi `do…while` có thể không thực hiện lần nào.
    B. Vòng lặp `do…while` luôn thực hiện ít nhất một lần, trong khi `while` có thể không thực hiện lần nào.
    C. Không có sự khác biệt, chúng hoàn toàn giống nhau.
    D. Vòng lặp `while` sử dụng toán tử tăng, trong khi `do…while` sử dụng toán tử giảm.

    101. Trong C, làm thế nào để bạn truyền một mảng vào một hàm sao cho hàm có thể sửa đổi các phần tử của mảng gốc?

    A. Bằng cách truyền mảng theo giá trị.
    B. Bằng cách truyền một bản sao của mảng.
    C. Bằng cách truyền một con trỏ đến mảng.
    D. Không thể sửa đổi mảng gốc trong hàm.

    102. Đoạn code nào sau đây minh họa việc sử dụng đúng cách hàm `realloc()` để thay đổi kích thước một khối bộ nhớ đã cấp phát?

    A. int *ptr = (int*)malloc(10 * sizeof(int)); realloc(ptr, 20 * sizeof(int));
    B. int *ptr = (int*)malloc(10 * sizeof(int)); ptr = (int*)realloc(ptr, 20 * sizeof(int));
    C. int *ptr = (int*)malloc(10 * sizeof(int)); free(ptr); ptr = (int*)realloc(ptr, 20 * sizeof(int));
    D. int *ptr = (int*)calloc(10, sizeof(int)); ptr = (int*)realloc(NULL, 20 * sizeof(int));

    103. Trong C, sự khác biệt chính giữa `struct` và `union` là gì?

    A. `struct` lưu trữ các thành viên ở các vùng nhớ khác nhau, trong khi `union` lưu trữ các thành viên ở cùng một vùng nhớ.
    B. `struct` chỉ có thể chứa các biến kiểu int, trong khi `union` có thể chứa bất kỳ kiểu dữ liệu nào.
    C. `struct` được sử dụng cho các hàm, trong khi `union` được sử dụng cho các biến.
    D. Không có sự khác biệt nào giữa `struct` và `union`.

    104. Điều gì xảy ra nếu bạn gọi `free()` trên cùng một con trỏ hai lần trong C?

    A. Bộ nhớ sẽ được giải phóng hai lần, dẫn đến tăng hiệu suất.
    B. Chương trình sẽ báo lỗi biên dịch.
    C. Hành vi không xác định (Undefined behavior).
    D. Không có gì xảy ra, `free()` sẽ bỏ qua lần gọi thứ hai.

    105. Điều gì sẽ xảy ra nếu bạn cố gắng truy cập một phần tử của mảng vượt quá kích thước của mảng trong C?

    A. Chương trình sẽ báo lỗi biên dịch.
    B. Chương trình sẽ chạy bình thường.
    C. Hành vi không xác định (Undefined behavior).
    D. Mảng sẽ tự động mở rộng.

    106. Trong C, làm thế nào để bạn định nghĩa một macro?

    A. using macro = …;
    B. define macro() …;
    C. #define MACRO …
    D. macro MACRO() …

    107. Trong C, điều gì xảy ra nếu bạn không giải phóng bộ nhớ đã cấp phát động?

    A. Chương trình sẽ tự động giải phóng bộ nhớ khi kết thúc.
    B. Bộ nhớ sẽ bị khóa và không thể sử dụng được nữa.
    C. Rò rỉ bộ nhớ (Memory leak).
    D. Chương trình sẽ chạy chậm hơn nhưng không có vấn đề gì.

    108. Trong C, hàm `strcmp()` được sử dụng để làm gì?

    A. Sao chép một chuỗi sang một chuỗi khác.
    B. Nối hai chuỗi lại với nhau.
    C. So sánh hai chuỗi.
    D. Tìm kiếm một chuỗi con trong một chuỗi lớn hơn.

    109. Toán tử nào được sử dụng để truy cập một thành viên của một struct thông qua một con trỏ?

    A. .
    B. ->
    C. *
    D. &

    110. Trong C, ý nghĩa của `void *` là gì?

    A. Một con trỏ không trỏ đến đâu cả.
    B. Một con trỏ đến một hàm void.
    C. Một con trỏ có thể trỏ đến bất kỳ kiểu dữ liệu nào.
    D. Một con trỏ không thể được giải tham chiếu.

    111. Trong C, hàm `perror()` dùng để làm gì?

    A. In ra một thông báo lỗi do hệ thống tạo ra.
    B. Đọc một thông báo lỗi từ tệp.
    C. Xóa một thông báo lỗi.
    D. Tạo ra một thông báo lỗi tùy chỉnh.

    112. Hàm `fopen()` trả về giá trị gì nếu không thể mở tệp?

    A. 0
    B. 1
    C. NULL
    D. -1

    113. Trong C, giá trị trả về của hàm `main()` có ý nghĩa gì?

    A. Số lượng dòng trong chương trình.
    B. Địa chỉ của hàm `main()` trong bộ nhớ.
    C. Trạng thái thoát của chương trình.
    D. Thời gian thực thi của chương trình.

    114. Trong C, làm thế nào để bạn khai báo một con trỏ hàm (function pointer)?

    A. int function *ptr(int);
    B. int *ptr function(int);
    C. int (*ptr)(int);
    D. int ptr(int) *function;

    115. Trong C, hàm `fgets()` được sử dụng để làm gì?

    A. Ghi một chuỗi vào tệp.
    B. Đọc một chuỗi từ tệp.
    C. Đọc một chuỗi từ bàn phím.
    D. Tìm kiếm một chuỗi trong một tệp.

    116. Trong C, toán tử `sizeof` trả về cái gì?

    A. Số lượng phần tử trong một mảng.
    B. Kích thước của một biến hoặc kiểu dữ liệu tính bằng byte.
    C. Địa chỉ của một biến.
    D. Giá trị của một biến.

    117. Trong C, hàm `sprintf()` dùng để làm gì?

    A. In ra màn hình theo định dạng.
    B. Đọc dữ liệu từ bàn phím theo định dạng.
    C. Ghi dữ liệu đã định dạng vào một chuỗi.
    D. Đọc dữ liệu đã định dạng từ một chuỗi.

    118. Câu lệnh nào sau đây được sử dụng để kết thúc vòng lặp ngay lập tức và chuyển điều khiển đến câu lệnh tiếp theo sau vòng lặp trong C?

    A. continue
    B. break
    C. return
    D. exit

    119. Hàm nào được sử dụng để giải phóng bộ nhớ đã được cấp phát động trong C?

    A. malloc()
    B. calloc()
    C. realloc()
    D. free()

    120. Hàm nào được sử dụng để cấp phát bộ nhớ động trong C?

    A. printf()
    B. scanf()
    C. malloc()
    D. free()

    121. Hàm nào được sử dụng để đọc một dòng từ đầu vào chuẩn trong C?

    A. scanf()
    B. cin()
    C. gets()
    D. fgets()

    122. Trong C, `#include ` có tác dụng gì?

    A. Bao gồm các hàm toán học.
    B. Bao gồm các hàm nhập/xuất chuẩn.
    C. Bao gồm các hàm xử lý chuỗi.
    D. Bao gồm các hàm quản lý bộ nhớ.

    123. Hàm nào được sử dụng để in ra màn hình trong C?

    A. print()
    B. System.out.println()
    C. printf()
    D. console.log()

    124. Hàm nào sau đây được sử dụng để ghi dữ liệu nhị phân vào một tệp trong C?

    A. fprintf()
    B. fwrite()
    C. fprintb()
    D. fscanb()

    125. Tiền xử lý (preprocessor) trong C làm gì?

    A. Biên dịch mã C thành mã máy.
    B. Liên kết các tệp đối tượng thành một chương trình thực thi.
    C. Xử lý các chỉ thị bắt đầu bằng `#` trước khi biên dịch.
    D. Gỡ lỗi mã C.

    126. Trong C, làm thế nào để bạn kiểm tra xem một tệp có tồn tại hay không trước khi mở nó?

    A. Sử dụng hàm `file_exists()`.
    B. Không có cách nào trực tiếp để kiểm tra.
    C. Mở tệp và kiểm tra xem `fopen()` có trả về `NULL` hay không.
    D. Sử dụng hàm `access()` với chế độ `F_OK`.

    127. Toán tử nào được sử dụng để gán giá trị trong C?

    A. ==
    B. =
    C. +=
    D. ->

    128. Trong ngôn ngữ C, kiểu dữ liệu nào được sử dụng để lưu trữ một ký tự duy nhất?

    A. int
    B. float
    C. char
    D. string

    129. Trong C, vòng lặp `do-while` khác với vòng lặp `while` như thế nào?

    A. Vòng lặp `do-while` không tồn tại trong C.
    B. Vòng lặp `while` luôn thực thi ít nhất một lần, trong khi `do-while` có thể không thực thi lần nào.
    C. Vòng lặp `do-while` luôn thực thi ít nhất một lần, trong khi `while` có thể không thực thi lần nào.
    D. Chúng hoàn toàn giống nhau.

    130. Từ khóa nào được sử dụng để kết thúc một vòng lặp ngay lập tức trong C?

    A. continue
    B. exit
    C. break
    D. return

    131. Trong C, làm thế nào để bạn định nghĩa một hằng số?

    A. constant int x = 10;
    B. final int x = 10;
    C. #define x 10
    D. static int x = 10;

    132. Trong C, `static` có ý nghĩa gì khi được sử dụng bên trong một hàm?

    A. Biến chỉ có thể được truy cập từ các hàm khác trong cùng một tệp.
    B. Biến chỉ có thể được truy cập từ bên trong hàm đó.
    C. Biến được lưu trữ trong bộ nhớ chỉ đọc.
    D. Biến giữ lại giá trị của nó giữa các lần gọi hàm.

    133. Điều gì sẽ xảy ra nếu bạn cố gắng truy cập một phần tử của mảng vượt quá kích thước của nó trong C?

    A. Chương trình sẽ báo lỗi biên dịch.
    B. Chương trình sẽ chạy nhưng có thể gây ra lỗi không mong muốn.
    C. Chương trình sẽ tự động mở rộng kích thước mảng.
    D. Không có gì xảy ra.

    134. Điều gì xảy ra nếu bạn chia một số cho 0 trong C?

    A. Chương trình sẽ biên dịch thành công và chạy đúng.
    B. Chương trình sẽ báo lỗi biên dịch.
    C. Chương trình sẽ chạy nhưng có thể gây ra lỗi runtime (ví dụ: floating-point exception).
    D. Chương trình sẽ tự động gán kết quả bằng 0.

    135. Trong C, `volatile` có ý nghĩa gì?

    A. Biến có thể bị thay đổi bởi hệ điều hành.
    B. Biến chỉ có thể được truy cập một lần.
    C. Biến có thể thay đổi ngoài tầm kiểm soát của chương trình.
    D. Biến được lưu trữ trong bộ nhớ ảo.

    136. Trong C, khi nào bạn nên sử dụng `inline`?

    A. Để giảm kích thước mã.
    B. Để tăng tốc độ thực thi của các hàm nhỏ được gọi thường xuyên.
    C. Để ngăn chặn việc biên dịch một hàm.
    D. Để tạo một hàm đệ quy.

    137. Trong C, một con trỏ là gì?

    A. Một kiểu dữ liệu nguyên thủy.
    B. Một biến lưu trữ địa chỉ của một biến khác.
    C. Một hàm đặc biệt.
    D. Một mảng các ký tự.

    138. Hàm nào được sử dụng để giải phóng bộ nhớ đã được cấp phát động trong C?

    A. allocate()
    B. release()
    C. free()
    D. deallocate()

    139. Đâu là cách sử dụng đúng của `typedef` trong C?

    A. Để định nghĩa một hàm mới.
    B. Để tạo ra một hằng số.
    C. Để tạo ra một bí danh cho một kiểu dữ liệu.
    D. Để bao gồm một thư viện.

    140. Cách khai báo một con trỏ hàm trong C?

    A. int function *ptr(int);
    B. int (*ptr)(int);
    C. int *ptr function(int);
    D. function int *ptr(int);

    141. Cấu trúc điều khiển nào sau đây KHÔNG có trong C?

    A. if
    B. switch
    C. for
    D. foreach

    142. Sự khác biệt chính giữa `struct` và `union` trong C là gì?

    A. `struct` lưu trữ các thành viên trong các vùng nhớ riêng biệt, trong khi `union` chia sẻ cùng một vùng nhớ.
    B. `struct` chỉ có thể chứa các kiểu dữ liệu nguyên thủy, trong khi `union` có thể chứa bất kỳ kiểu dữ liệu nào.
    C. `struct` được sử dụng cho các hàm, trong khi `union` được sử dụng cho các biến.
    D. Không có sự khác biệt, chúng là giống nhau.

    143. Thư viện nào trong C cung cấp các hàm để làm việc với chuỗi?

    A. stdio.h
    B. string.h
    C. math.h
    D. stdlib.h

    144. Điều gì xảy ra khi bạn sử dụng toán tử `&` trước một biến trong C?

    A. Bạn nhận được giá trị của biến.
    B. Bạn nhận được địa chỉ của biến.
    C. Bạn thực hiện phép AND bitwise.
    D. Bạn khai báo một con trỏ.

    145. Trong C, hàm `atoi()` dùng để làm gì?

    A. Chuyển đổi một số nguyên thành một chuỗi.
    B. Chuyển đổi một chuỗi thành một số nguyên.
    C. Chuyển đổi một số thực thành một số nguyên.
    D. Chuyển đổi một ký tự thành mã ASCII.

    146. Trong C, sự khác biệt giữa `const char*` và `char* const` là gì?

    A. `const char*` là một con trỏ không đổi đến một ký tự, `char* const` là một con trỏ đến một ký tự không đổi.
    B. `const char*` là một con trỏ đến một ký tự không đổi, `char* const` là một con trỏ không đổi đến một ký tự.
    C. Chúng hoàn toàn giống nhau.
    D. `const char*` là một ký tự không đổi, `char* const` là một con trỏ không đổi.

    147. Trong C, tham số nào sau đây được truyền theo giá trị?

    A. Mảng
    B. Con trỏ
    C. Cấu trúc
    D. Biến thông thường (int, float, char)

    148. Trong C, hàm `qsort()` được sử dụng để làm gì?

    A. Để tìm kiếm một phần tử trong một mảng.
    B. Để sắp xếp một mảng.
    C. Để đảo ngược một mảng.
    D. Để sao chép một mảng.

    149. Chức năng của hàm `fopen()` trong C là gì?

    A. Để định dạng ổ đĩa.
    B. Để mở một tệp.
    C. Để đóng một tệp.
    D. Để đọc dữ liệu từ bàn phím.

    150. Đoạn code C nào sau đây cấp phát bộ nhớ động cho một mảng 10 số nguyên?

    A. int arr[10];
    B. int *arr = malloc(10);
    C. int *arr = malloc(10 * sizeof(int));
    D. int *arr = calloc(10, sizeof(int));

    Số câu đã làm: 0/0
    Thời gian còn lại: 00:00:00
    • Đã làm
    • Chưa làm
    • Cần kiểm tra lại

    Về Tài Liệu Trọn Đời

    Tài Liệu Trọn Đời - Blog cá nhân, tài liệu học tập, khoa học, công nghệ, thủ thuật, chia sẻ mọi kiến thức, lĩnh vực khác nhau đến với bạn đọc.

    Gmail: info.tailieutrondoi@gmail.com

    Địa chỉ: 127 Đ Nguyễn Văn Tăng, Long Thạnh Mỹ, Thủ Đức, Hồ Chí Minh 700000, Việt Nam

    Giờ làm việc: T2-CN: 09:00 – 17:00

    Maps

    Miễn Trừ Trách Nhiệm

    Tài Liệu Trọn Đời - Blog được xây dựng nhằm mục đích thử nghiệm, tham khảo, hỗ trợ học tập và nghiên cứu.

    Tài Liệu Trọn Đời không chịu trách nhiệm dưới bất kỳ hình thức nào đối với thiệt hại trực tiếp hoặc gián tiếp phát sinh từ việc sử dụng hoặc áp dụng các nội dung trên trang web.

    Các câu hỏi và đáp án trong danh mục "Trắc nghiệm" được biên soạn nhằm mục đích hỗ trợ học tập và tra cứu thông tin. Đây KHÔNG phải là tài liệu chính thức hay đề thi do bất kỳ cơ sở giáo dục hoặc tổ chức cấp chứng chỉ chuyên ngành nào ban hành.

    Website không chịu trách nhiệm về độ chính xác tuyệt đối của nội dung cũng như mọi quyết định được đưa ra từ việc sử dụng kết quả trắc nghiệm hoặc các thông tin trong bài viết trên Website.

    Chịu Trách Nhiệm Nội Dung

    Blogger: Tài Liệu Trọn Đời

    Mọi vấn đề liên quan đến bản quyền nội dung vui lòng liên hệ qua Gmail: info.tailieutrondoi@gmail.com

    Social

    • X
    • LinkedIn
    • Flickr
    • YouTube
    • Pinterest

    Website Cùng Hệ Thống

    Phần Mềm Trọn Đời - Download Tải Phần Mềm Miễn Phí Kiến Thức Live - Tin Tức | Kiến Thức Cuộc Sống | Công Nghệ All Thing Share - Sharing | Knowledge | Technology | Tips | Pets | Life All Thing Pet – We Love Pets Trending New 24h - Cập Nhật Xu Hướng | Trend | News 24h
    Copyright © 2025 Tài Liệu Trọn Đời
    Back to Top

    Bạn ơi!!! Để xem được kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

    HƯỚNG DẪN TÌM MẬT KHẨU

    Đang tải nhiệm vụ...

    Bước 1: Mở tab mới và truy cập Google.com. Sau đó tìm kiếm chính xác từ khóa sau:

    Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

    Hướng dẫn tìm kiếm

    Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu như hình ảnh hướng dẫn:

    Hướng dẫn lấy mật khẩu

    Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.