Kết quả của đoạn chương trình sau là gì? Nếu gõ vào: “r 45”.
char c;
int n;
scanf(“ % c % d”, & n, & c);
char c;
int n;
scanf(“ % c % d”, & n, & c);
Trả lời:
Đáp án đúng: D
Đoạn chương trình sử dụng hàm `scanf` để đọc dữ liệu từ đầu vào chuẩn. Cú pháp `scanf(" %c %d", &n, &c);` có một lỗi quan trọng: thứ tự của `%c` (đọc ký tự) và `%d` (đọc số nguyên) bị đảo ngược so với thứ tự của các biến `n` (int) và `c` (char) trong danh sách các tham số truyền vào hàm `scanf`. Điều này có nghĩa là chương trình sẽ cố gắng đọc một ký tự vào biến `n` (biến số nguyên) và một số nguyên vào biến `c` (biến ký tự).
Khi nhập "r 45", chương trình sẽ cố gắng gán ký tự 'r' cho biến `n` kiểu `int`. Điều này sẽ dẫn đến việc `n` nhận một giá trị không mong muốn (thường là mã ASCII của 'r', nhưng không đảm bảo). Sau đó, chương trình sẽ cố gắng đọc '45' vào biến `c` kiểu `char`, điều này cũng sẽ không hoạt động như mong đợi vì kiểu dữ liệu không phù hợp.
Vì thứ tự chỉ định định dạng và biến không khớp, và chương trình cố gắng gán một ký tự cho một biến số nguyên, kết quả sẽ không phải là `n = 45` và `c = 'r'`. Do đó, đáp án B không đúng. Đáp án A cũng không đúng vì lý do tương tự.
Tuy nhiên, trong thực tế, cách chương trình xử lý việc gán sai kiểu này phụ thuộc vào trình biên dịch và hệ điều hành. Một số trình biên dịch có thể cảnh báo, nhưng chương trình vẫn có thể chạy, mặc dù với kết quả không mong muốn. Do đó, đáp án D ("Kết quả khác") có vẻ phù hợp nhất trong tình huống này, vì kết quả chắc chắn sẽ không phải là A hoặc B.
Tuy nhiên, cần lưu ý rằng theo chuẩn C, việc sử dụng sai định dạng trong `scanf` là một lỗi lập trình nghiêm trọng và có thể dẫn đến hành vi không xác định. Trong một số trường hợp, chương trình có thể gặp sự cố. Mặc dù đáp án D có vẻ gần đúng nhất, nhưng có thể lập luận rằng chương trình có "lỗi" theo nghĩa rộng.
Trong các kỳ thi, nên chọn đáp án phản ánh rõ ràng nhất lỗi trong code. Do đó, đáp án D (Kết quả khác) là đáp án chính xác nhất.
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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
