01/10/2018, 08:42

Sao mình nhập 7.7 lại in ra B mà ko phải B+ nhỉ

#include<stdio.h>
int main()
{
    float a;
    printf("nhap vao so diem trung binh
");
    scanf("%f",&a);
    if (8.5<=a && a<=10){
        printf("A");
    }
        else if (a>=7.7){
            printf("B+");
        }
        else if (a>=7.0){
            printf("B");
        }
        else if (a>=6.2){
            printf("C+");
        }
        else if (a>=5.5){
            printf("C");
        }
        else if (a>=4.7){
            printf("D+");
        }
        else if (a>=4.0){
            printf("D");
        }
        else {
            printf("Khong co diem chu");
        }
    return 0;
}
明玉 viết 10:57 ngày 01/10/2018

Bạn thay hết tất cả các con số như 8.5 và 7.7 thành: 8.5f và 7.7f là đúng ngay.
Để bình thường thì chúng nó thành kiểu double hết, so sánh với float không chính xác.

Thành Nguyen viết 10:48 ngày 01/10/2018

tks bạn nha!


Thành Nguyen viết 10:44 ngày 01/10/2018

if (8.5<=a && a<=10){
printf(“A”);
}
sao dòng này mình không cho f mà nhập 8.5 vẫn đúng nhỉ nếu mà nhập như sau thì ctrinh báo lỗi
if (8.5f<=a && a<=10f){
printf(“A”);
}

明玉 viết 10:54 ngày 01/10/2018

Chương trình báo lỗi gì, bạn đưa lên coi nào.
À, sửa 10f thành 10.0f nhé.
Còn đúng sai thì hên xui, do bạn dùng lớn hơn hoặc bằng nên nó rơi vào trường hợp lớn hơn, so sánh số thực phải cẩn thận tí.

Thành Nguyen viết 10:48 ngày 01/10/2018

明玉 viết 10:58 ngày 01/10/2018

Mình mới sửa reply, bạn xem lại nhé.

Thành Nguyen viết 10:48 ngày 01/10/2018

ừ đúng rồi cám ơn cái nữa

Bài liên quan
0