What will be printed when the following program is executed?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>

double average(int a, int b, int c) {
    double result;
    result = (a+b+c)/3.0;
    return result;
}

int main() {
    printf("%.6f", average(5, 8, 7));
    return 0;
}

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: "6.666667". Tổng ba đối số là 20, và chia cho 3.0 là phép chia có một toán hạng thực nên C nâng 20 lên double rồi chia thực, cho 6.666 và còn lặp mãi, khác hẳn việc chia cho hằng nguyên. Giá trị ấy được trả về qua kiểu double, còn đặc tả yêu cầu in sáu chữ số sau dấu thập phân kèm làm tròn chữ số cuối, nên màn hình hiện 6.666667. Lựa chọn "6.000000" là kết quả nếu mẫu số viết là hằng nguyên 3, khi đó chia nguyên cắt phần thập phân trước cả lúc gán vào biến double. Lựa chọn "20.000000" là tổng chưa chia. Lựa chọn "6" sai về dạng in vì đặc tả này luôn kéo đủ sáu chữ số thập phân chứ không rút ngắn, và cũng sai về giá trị vì phần thập phân bị bỏ mất.

Cùng phần 4

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