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 `scanf` để đọc dữ liệu từ đầu vào. Định dạng chuỗi `" %c %d"` chỉ định rằng chương trình sẽ đọc một ký tự (bỏ qua khoảng trắng đầu dòng) và sau đó đọc một số nguyên. Tuy nhiên, có một lỗi quan trọng: thứ tự của các biến trong `scanf` không khớp với thứ tự của các đặc tả định dạng. Cụ thể, `%c` tương ứng với `&n` (địa chỉ của biến số nguyên `n`), và `%d` tương ứng với `&c` (địa chỉ của biến ký tự `c`).
Khi người dùng nhập "r 45", chương trình sẽ cố gắng đọc ký tự 'r' vào biến số nguyên `n`. Điều này có thể dẫn đến hành vi không xác định hoặc lỗi tùy thuộc vào trình biên dịch và hệ điều hành. Vì `%c` đọc 'r' vào `n`, giá trị của `n` sẽ là mã ASCII của 'r', thường là 114. Sau đó, `%d` cố gắng đọc số 45 vào biến ký tự `c`. `c` sẽ chứa giá trị 45 (tức là ký tự có mã ASCII là 45, là dấu '-').
Vì câu hỏi đưa ra `scanf(“ % c % d”, & n, & c);` có lỗi về thứ tự biến nên không có đáp án nào đúng.
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.
22 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
