如何解决输入错误回弹重新输入的问题

#include
int main()
{
int num1=0,num2=0;
double sum=0;
double cBOOK=52.8;
double vivoprice=2899.0;
int a;

 printf("c程序设计第五版:%.2lf元\n",cBOOK);
 printf("vivo手机:%.2lf元\n",vivoprice);
 printf("请输入你要购买的C语言书本的数量:\n");
 scanf("%d",&num1);
    if(num1==0&&num1>=1000)
 {
     printf("警告!商品不能数量不能等于0,商品不能数量不能大于1000");
     
 }
 
 sum+=num1*cBOOK;
 
 printf("请输入你要购买vivo手机的数量:\n");
 scanf("%d",&num2);
 if(num2==0)
 {
     printf("警告!商品不能数量不能等于0");
     
 }else  if(num2>=1000)
 {
     printf("警告!商品不能数量不能大于1000\n");
 }
 sum+=num2*vivoprice;
 printf("请选择你的结算方式:1.满99元减10元  2.满58元减5元,满232元减20元  3.不使用优惠\n");
 printf("请输入你的选择\n");
scanf("%d",&a) ;

 if(a==1&&sum>=99) 
 {
     sum=sum-10;
 }else if(a==2&&sum>58)
 {
     sum=sum-5;
 }else if(a==2&&sum>=232)
 {
     sum=sum-20;
 }else if(a==3)
 {
     sum=sum;
 }else if(a!=1||2||3)
 {
     printf("选择错误,请重新选择优惠方式\n");
 }
 
 printf("总共%.2lf元",sum);
return 0;
    
 

}

最后的输入改为
while (1)
    {
        scanf("%d", &a);
        if (a > 0 && a <= 3)
            break;
        else
            printf("选择错误,请重新选择优惠方式\n");
    }

删除最后的 else if(a!=1||2||3)块