After the following code is executed with the input is 2.5 3.6, what are the values of the variables N, RE and X?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
int main(){
    int n =12, re;float x, y;
    printf("input =");
    re = scanf("%d%f%f",&n,&x,&y);
    printf("%d, %d, %f",n, re, x);
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "2, 3, 0.5". Dãy ký tự nhập là 2.5 rồi dấu cách rồi 3.6, nhưng scanf đọc theo đặc tả chứ không theo cách con người đọc. Đặc tả %d chỉ nhận chữ số nên nó lấy 2 rồi dừng ngay trước dấu chấm, n thành 2. Đặc tả %f tiếp tục từ dấu chấm, đọc .5 thành số thực 0.5 cho x. Đặc tả %f thứ hai bỏ qua dấu cách rồi đọc 3.6 cho y. Cả ba chuyển đổi đều thành công nên scanf trả về 3, giá trị gán cho re. Dãy "2, 2, 2.5" đếm thiếu một chuyển đổi và coi như %f đã lấy trọn 2.5. Dãy "2, 3, 2.5" đúng số chuyển đổi nhưng vẫn gán 2.5 cho x, điều không thể vì phần nguyên đã bị %d lấy mất. Dãy "2, 2, 0.5" đúng x nhưng báo chỉ hai chuyển đổi, trong khi y cũng được nạp từ 3.6.

Cùng phần 6

Xuất hiện trong 1 bộ đề