Dấu hiệu nào là đúng khi sử dụng hàm fputs():
Đáp án đúng: A
Hàm fputs()
dùng để ghi một chuỗi vào một luồng (file). Cú pháp đúng của nó là:
int fputs(const char *s, FILE *f);
Trong đó:
s
là con trỏ tới chuỗi cần ghi.f
là con trỏ tới đối tượng FILE (luồng) mà chuỗi sẽ được ghi vào.
Hàm trả về một giá trị khác âm nếu thành công và EOF nếu có lỗi.
Vậy, đáp án A là đúng.
Câu hỏi liên quan
Câu lệnh FILE *fopen(tep1, "ab");
có ý nghĩa: Mở tệp nhị phân đã có (nếu tệp tồn tại) và ghi thêm dữ liệu nối tiếp (append) vào cuối tệp này. Nếu tệp không tồn tại, một tệp mới sẽ được tạo.
FILE *
: Khai báo một con trỏ kiểu FILE, dùng để quản lý tệp.fopen()
: Hàm mở tệp.tep1
: Tên tệp cần mở."ab"
: Chế độ mở tệp.
Trong đó, chế độ "ab"
có ý nghĩa:
"a"
: Mở tệp để ghi thêm dữ liệu (append). Dữ liệu mới sẽ được ghi vào cuối tệp. Nếu tệp không tồn tại, nó sẽ được tạo mới."b"
: Chỉ định tệp được mở ở chế độ nhị phân (binary).
Phân tích câu hỏi:
Câu hỏi kiểm tra kiến thức về cách khởi tạo giá trị cho các biến cấu trúc (struct) trong ngôn ngữ lập trình C (hoặc C++). Cần xem xét cú pháp khởi tạo nào là đúng.
Đánh giá các phương án:
- S1:
struct S1{ int ngay, thang, nam;}; S1=(2, 1, 3);
Đây là cách khởi tạo sai. Khi khởi tạo một biến cấu trúc, cần sử dụng cặp ngoặc nhọn{}
để bao quanh các giá trị khởi tạo, và các giá trị này phải tương ứng với thứ tự các thành viên trong cấu trúc. - S2:
struct S2{ char hoten[10] struct S1 ngaysinh;}; S2={“Ly Ly”, {4, 5, 6}};
Ở đây,struct S2
chứa một mảng ký tựhoten
và một cấu trúcS1
có tên làngaysinh
. Việc khởi tạo“Ly Ly”
chohoten
và{4, 5, 6}
chongaysinh
là đúng cú pháp, sử dụng ngoặc nhọn để khởi tạo giá trị cho từng thành phần của cấu trúc.
Kết luận:
Vậy, S1 sai và S2 đúng.
Trong ngôn ngữ lập trình C (và nhiều ngôn ngữ khác), khi làm việc với kiểu dữ liệu cấu trúc (struct), có một số quy tắc gán giá trị cần tuân thủ. Xét các phương án:
- A. Gán biến cho nhau: Đây là một thao tác hợp lệ. Nếu có hai biến cùng kiểu cấu trúc, ta có thể gán giá trị của biến này cho biến kia. Ví dụ:
struct SinhVien a, b; b = a;
- B. Gán hai phần tử mảng (kiểu cấu trúc) cho nhau: Đây cũng là một thao tác hợp lệ. Nếu có một mảng các cấu trúc, ta có thể gán giá trị giữa các phần tử của mảng. Ví dụ:
struct SinhVien danh_sach[10]; danh_sach[0] = danh_sach[1];
- C. Gán một phần tử mảng (kiểu cấu trúc) cho một biến hoặc ngược lại: Đây cũng là một thao tác hợp lệ. Ta có thể gán một phần tử của mảng cấu trúc cho một biến cấu trúc và ngược lại. Ví dụ:
struct SinhVien a, danh_sach[10]; a = danh_sach[0];
hoặcdanh_sach[0] = a;
- D. Gán hai mảng có cấu trúc có cùng số phần tử cho nhau: Đây là thao tác không được phép trong C. Không thể gán trực tiếp hai mảng cho nhau bằng toán tử
=
. Cần phải duyệt qua từng phần tử của mảng và gán giá trị tương ứng.
Vậy, phương án D là phương án không được phép.
Phân tích:
- Khai báo 1:
struct SV{ thongtin; struct SV *tiep;}
- Mỗi nút trong danh sách liên kết chỉ chứa thông tin của một sinh viên và một con trỏ đến nút tiếp theo.
- Khai báo 2:
struct SV {thongtin}; struct DS{struct SV sv; struct DS* tiep;};
- Có hai cấu trúc:
SV
chứa thông tin sinh viên vàDS
chứa một biến kiểuSV
và một con trỏ đến nút tiếp theo.
- Có hai cấu trúc:
Đánh giá các phương án:
- A. Khai báo 1 tốn nhiều bộ nhớ hơn khai báo 2:
- Sai. Khai báo 2 tốn nhiều bộ nhớ hơn vì mỗi nút trong danh sách liên kết (kiểu
DS
) chứa thêm một bản sao của cấu trúcSV
(thongtin), ngoài con trỏ.
- Sai. Khai báo 2 tốn nhiều bộ nhớ hơn vì mỗi nút trong danh sách liên kết (kiểu
- B. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi thay đổi vị trí 2 sinh viên:
- Sai. Việc thay đổi vị trí hai sinh viên trong danh sách liên kết liên quan đến việc thay đổi các con trỏ, không phụ thuộc vào việc khai báo cấu trúc như thế nào. Hơn nữa, khai báo 2 có thể chậm hơn một chút do phải truy cập gián tiếp qua
sv
.
- Sai. Việc thay đổi vị trí hai sinh viên trong danh sách liên kết liên quan đến việc thay đổi các con trỏ, không phụ thuộc vào việc khai báo cấu trúc như thế nào. Hơn nữa, khai báo 2 có thể chậm hơn một chút do phải truy cập gián tiếp qua
- C. Khai báo 1 sẽ giúp tiết kiệm câu lệnh hơn khi viết hàm thay đổi vị trí 2 sinh viên:
- Đúng. Với khai báo 1, việc thay đổi vị trí hai sinh viên đơn giản là thay đổi các con trỏ. Với khai báo 2, bạn cần truy cập
sv
để lấy thông tin sinh viên, làm cho code phức tạp hơn một chút.
- Đúng. Với khai báo 1, việc thay đổi vị trí hai sinh viên đơn giản là thay đổi các con trỏ. Với khai báo 2, bạn cần truy cập
- D. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi duyệt danh sách:
- Sai. Tốc độ duyệt danh sách phụ thuộc chủ yếu vào tốc độ truy cập bộ nhớ và số lượng con trỏ cần truy cập. Trong trường hợp này, khai báo 2 có thể chậm hơn do phải truy cập gián tiếp (
DS -> sv
).
- Sai. Tốc độ duyệt danh sách phụ thuộc chủ yếu vào tốc độ truy cập bộ nhớ và số lượng con trỏ cần truy cập. Trong trường hợp này, khai báo 2 có thể chậm hơn do phải truy cập gián tiếp (
Vậy, đáp án đúng nhất là C.
Phân tích câu hỏi:
Câu hỏi kiểm tra kiến thức về kiểu dữ liệu "struct" trong lập trình, cụ thể là định nghĩa và đặc điểm của nó.
Đánh giá các phương án:
- A. “struct” là một kiểu dữ liệu do người dùng định nghĩa bao gồm nhiều thành phần có kiểu khác nhau. Phương án này chính xác. "struct" cho phép người dùng tạo ra một kiểu dữ liệu mới bằng cách nhóm các biến có kiểu dữ liệu khác nhau lại với nhau.
- B. “struct” là sự kết hợp của nhiều thành phần có thể có kiểu khác nhau. Phương án này cũng đúng, tuy nhiên chưa đầy đủ bằng phương án A. Nó chỉ mô tả một phần của định nghĩa "struct".
- C. Cả 2 ý đều đúng. Vì cả hai ý A và B đều đúng và bổ sung cho nhau để mô tả đầy đủ hơn về "struct", đây là đáp án chính xác nhất.
- D. Cả hai ý đều sai. Rõ ràng là sai vì cả hai ý A và B đều đúng.
Kết luận:
Đáp án C là đáp án đúng nhất vì nó bao gồm cả hai khía cạnh của định nghĩa "struct".

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.