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\n");
    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\n", angle);
    else if (angle <= 180 + 360*k)
        printf("Goc %d do thuoc goc phan tu thu hai\n", angle);
    else if (angle <= 270 + 360*k)
        printf("Goc %d do thuoc goc phan tu thu ba\n", angle);
    else if (angle <= 360*k)
        printf("Goc %d do thuoc goc phan tu thu tu\n", angle);
    else
        printf("so do goc khong hop le\n");
    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?

Đầu tiên là vì sao phải tính k :slight_smile: 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.

1 Like

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

Thế thôi.

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?