关于switch的循环,求相助

关于switch的循环,求帮助
#include "stdio.h"
#include "ctype.h"
#define tax1 0.15
#define tax2 0.20
#define tax3 0.25
float caculate(float basic);
int main(void)
{

printf("*****************************************************************\n");
printf("Enter the number corresponding to the desired pay rate or action:\n");
printf("1) $8.75/hr                          2) $9.33/hr\n");
printf("3) $10.00/hr                         4) $11.20/hr\n");
printf("5) quit\n");
printf("******************************************************************\n");
int choose,i;
float basic1, basic2, basic3, basic4;
scanf("%d", &choose);
    switch (choose)                                                    //选择
{
case 1:caculate(basic1 = 8.75);
break;
case 2:caculate(basic2 = 9.33);
break;
case 3:caculate(basic3 = 10.00);
break;
case 4:caculate(basic4 = 11.20);
break;
case 5:printf("quit");
break;
default:printf("please enter the num between 1--5");
break;
}
return (0);
}






float caculate( float basic)                                //计算每月工资
{
int hour, hour2;
float sum, over1, over2;
printf("please enter you work hour;");               
scanf("%d", &hour);                                     
if (hour <= 40)                                        //时间不足40小时
{
sum = hour*basic;
if (sum < 300)
{
printf("your total salary is%f,tax is0.15,salary after tax \
is%f", sum, sum*tax1);
}
else if (sum < 450)
{
over1 = sum - 300;
printf("your total salary is%f,tax is0.15and0.20,salary after tax \
is%f", sum, 255 + over1*tax2);
}
else                                               //超过450块钱
{
over2 = sum - 450;
printf("your total salary is%f,tax is0.15and0.20and0.25,salary after tax \
is%f", sum, 375 + over2*tax3);
}
}
else                                                  //时间超过40小时
{
hour2 = 40 + 1.5*(hour - 40);
sum = hour2*basic;
if (sum < 450)
{
over1 = sum - 300;
printf("your total salary is%f,tax is0.15and0.20,salary after tax \
is%f", sum, 255 + over1*tax2);
}
else
{
over2 = sum - 450;
printf("your total salary is%f,tax is0.15and0.20and0.25,salary after tax \
is%f", sum, 375 + over2*tax3);
}

}
return;
}


如果输入了不是1-5怎么样才能重新输入而不是结束。
求帮助
------解决思路----------------------
do
{
    scanf(...);
    switch(choose);
    case...
    case...
    case...
}while(choose>5)
试试do...while循环。
------解决思路----------------------
如楼上的...
while(1)		 //永真循环
{
scanf("%d", &choose); //接受输入数据
if(choose > 5 
------解决思路----------------------
 choose < 0) //判断输入是否合法
{
printf("input error, please input again.!");
continue; //本次结束,进入下次循环,再输入
}
switch(choose)
{
case 0:return 0; //如果为零则退出,结束输入,结束条件
case 1:...
case 2:...
...
default:...
}
}