JavaScript is required

Có các khai báo sau. Trong các câu lệnh sau, câu nào đúng:
char tb, mang[15]

A.
tb=”chào bạn”;
B.
gets(mang);
C.
mang=”chao ban”;
D.
gets(tb);
Trả lời:

Đáp án đúng: B


Câu hỏi này kiểm tra kiến thức về cách sử dụng biến kiểu `char` và mảng ký tự (chuỗi) trong C/C++. * **`char tb`**: Khai báo một biến `tb` kiểu ký tự, chỉ có thể lưu trữ một ký tự duy nhất. * **`char mang[15]`**: Khai báo một mảng ký tự `mang` có 15 phần tử, có thể lưu trữ một chuỗi tối đa 14 ký tự (phần tử cuối cùng dành cho ký tự null '\0'). **Phân tích các phương án:** * **A. `tb = ”chào bạn”;`**: Sai. `tb` là một biến kiểu `char`, chỉ có thể chứa một ký tự. Việc gán một chuỗi (mảng các ký tự) cho một biến `char` là không hợp lệ và sẽ gây ra lỗi biên dịch. * **B. `gets(mang);`**: Đúng. `gets()` là một hàm trong C/C++ được sử dụng để đọc một chuỗi từ đầu vào chuẩn (thường là bàn phím) và lưu trữ nó vào mảng ký tự `mang`. Tuy nhiên, cần lưu ý rằng `gets()` không an toàn vì nó không kiểm tra kích thước của bộ đệm, có thể dẫn đến tràn bộ đệm (buffer overflow). Trong thực tế, `fgets()` thường được ưu tiên sử dụng hơn vì nó cho phép chỉ định kích thước tối đa của chuỗi được đọc. * **C. `mang = ”chao ban”;`**: Sai. Trong C/C++, bạn không thể gán trực tiếp một chuỗi ký tự (string literal) cho một mảng ký tự sau khi nó đã được khai báo. `mang` là một con trỏ hằng đến vùng nhớ đã được cấp phát cho mảng, và bạn không thể thay đổi địa chỉ này. Để sao chép một chuỗi vào mảng `mang`, bạn cần sử dụng các hàm như `strcpy()` hoặc `strncpy()`. * **D. `gets(tb);`**: Sai. `gets()` được thiết kế để đọc một chuỗi và lưu trữ nó vào một mảng ký tự. `tb` là một biến kiểu `char`, không phải là một mảng, do đó không thể sử dụng `gets()` để đọc dữ liệu vào `tb`.

Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.


50 câu hỏi 60 phút

Câu hỏi liên quan