01/10/2018, 11:50

Thắc mắc về bài tập lập trình C

Chào mn, e mới bắt đầu học lập trình C và đang làm mấy bài tập C cơ bản. E có thắc mắc về BT này: Xác định góc phần tư thứ mấy trên đường tròn lượng giác
source code:

int main()
{
    printf("XAC DINH GOC PHAN TU THU MAY TREN DUONG TRON LUONG GIAC
");
    int angle,k;
    printf("Nhap vao so do goc(0 <= x < 360*k): ");
    scanf("%d", &angle);
    k = angle / 360;
    if (360*k <= angle < 90 + 360*k)
        printf("Goc %d do thuoc goc phan tu thu nhat
", angle);
    else if (angle <= 180 + 360*k)
        printf("Goc %d do thuoc goc phan tu thu hai
", angle);
    else if (angle <= 270 + 360*k)
        printf("Goc %d do thuoc goc phan tu thu ba
", angle);
    else if (angle <= 360*k)
        printf("Goc %d do thuoc goc phan tu thu tu
", angle);
    else
        printf("so do goc khong hop le
");
    return 0;
}

Tại sao khi điều kiện trong if (360*k <= angle < 90 + 360*k) thì chương trình lại chạy sai còn khi

if (360*k <= angle && angle < 90 + 360*k) thì nó lại chạy đúng?

rogp10 viết 14:03 ngày 01/10/2018

Đầu tiên là vì sao phải tính k hay là bạn chép vào thôi?

Do điều kiện trả về 0 hay 1 nên biểu thức đk lớn trở thành 0 < 90 + 360*k và theo đk đề bài là luôn đúng.

HK boy viết 14:05 ngày 01/10/2018

C không hiểu cách viết dãy so sánh giống như ngôn ngữ tự nhiên như thế này

(360k <= angle < 90 + 360k)

Thế thôi.

Trần Hoàn viết 14:00 ngày 01/10/2018

angle < 90 + 360 * k nếu đúng thì trả về 1, nếu sai thì trả về 0
Như vậy bước tiếp theo sẽ là so sánh 360 * k <= 1 hoặc 360 * k <= 0

Hoặc cũng có thể là theo thứ tự từ trái sang phải, so sánh 1 hoặc 0 < 90 + 360 * k

Bài liên quan
0