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: C


Phân tích khai báo:

  • char tb: Khai báo một biến tb kiểu ký tự (chứa một ký tự duy nhất).
  • char mang[15]: Khai báo một mảng ký tự mang có kích thước 15, có thể chứa một chuỗi tối đa 14 ký tự (ký tự cuối cùng dành cho '\0').

Đánh giá 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ự duy nhất. Cố gắng gán một chuỗi ("chào bạn") cho một biến char sẽ gây ra lỗi.
  • B. gets(mang);: Đúng. gets() là một hàm trong C dùng để đọc một chuỗi từ đầu vào chuẩn (stdin) và lưu vào mảng ký tự mang. Vì mang đã được khai báo là một mảng ký tự, nên việc sử dụng gets(mang) là hợp lệ (mặc dù hàm gets() không an toàn và không khuyến khích sử dụng).
  • C. mang = "chao ban";: Sai. Trong C, không thể gán trực tiếp một chuỗi ký tự cho một mảng ký tự sau khi nó đã được khai báo. Cần sử dụng các hàm như strcpy() để sao chép chuỗi vào mảng.
  • D. gets(tb);: Sai. gets() cần một con trỏ đến một vùng nhớ đủ lớn để chứa chuỗi nhập vào. tb chỉ là một biến char, không đủ để chứa một chuỗi, và việc sử dụng gets(tb) sẽ gây ra lỗi (buffer overflow).

Câu hỏi liên quan