JavaScript is required

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);

A.

n=45, c=’ ‘

B.

n=45, c=’r’

C.

Lỗi khi xây dựng chương trình

D.

Kết quả khá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ụ thể, `scanf(" %c %d", &n, &c)` cố gắng đọc một ký tự vào biến `n` (kiểu `int`) và một số nguyên vào biến `c` (kiểu `char`). Khi nhập "r 45", chương trình sẽ gặp lỗi. Do `%c` sẽ đọc ký tự đầu tiên mà nó gặp (trong trường hợp này là 'r') và gán giá trị số của ký tự 'r' này cho biến `n` (kiểu int). Vì vậy, n sẽ có giá trị là mã ASCII của 'r' (là 114). Sau đó, `%d` sẽ cố gắng đọc một số nguyên nhưng sẽ gặp ký tự ' ', vì vậy, việc đọc sẽ thất bại và `c` sẽ không được gán giá trị. Như vậy không có đáp án nào đúng ở đây.

Câu hỏi liên quan