C语言基础,关于switch的用法

为什么会出错,头疼

#include <stdio.h>
#include <stdlib.h>
void menu()
{
    printf("-----------------------------\n");
    printf("-------即将进行体脂判断-------\n");
    printf("请输入需要判断的体重(kg)、身高(m)\n");
}
int main()
{
    float w,h,t;
    menu();
    scanf("%f %f",&w,&h);
    t=w/h*h;
    switch(t)
    {
        case t<=18:
                printf("少年,要努力多吃点哦!体脂率偏低!\n");
                break;
        case 18<t<=25:
                printf("体脂率正常嘛,好好保持!\n");
                break;
        case 25<t<=27:
                printf("多运动,要少吃点啦!已经超重了!\n");
                break;
        case t>27:
                printf("已经不是超重了,而是肥胖了加油减肥!\n");
                break;
        default:printf("请输入一个正常人的体重身高\n")
    }
    return 0;
}


代码已经更改为

#include <stdio.h>
#include <stdlib.h>
void menu()
{
    printf("-----------------------------\n");
    printf("-------即将进行体脂判断-------\n");
    printf("请输入需要判断的体重(kg)、身高(m)\n");
}
int main()
{
    float w,h;
    int t;
    menu();
    scanf("%f %f",&w,&h);
    t=w/h*h;
    switch(t=w/h*h)
    {
        case 1 :
                if(t<=18)
                printf("少年,要努力多吃点哦!体脂率偏低!\n");
                break;
        case 2 :
                if(18<t<=25)
                printf("体脂率正常嘛,好好保持!\n");
                break;
        case 3 :
                if(25<t<=27)
                printf("多运动,要少吃点啦!已经超重了!\n");
                break;
        case 4:
                if(t>27)
                printf("已经不是超重了,而是肥胖了加油减肥!\n");
                break;
        default:printf("请输入一个正常人的体重身高\n");
    }
    return 0;
}