抛出错误案例标签的编译器不会减少为常量

0 c switch-statement

在我的作业中,我被要求使用if和switch语句编写程序,以比较客户支付的净金额以获取以下详细信息

购买金额(100-200)然后给予5%的折扣.

购买金额(200-500)然后给予7.5%的折扣.

购买金额(500-800)然后给予10%的折扣.

购买金额(1000以上)然后给予15%的折扣.

这是我可以提出的,但是在编译它时会给我一些错误

第10行:错误:case标签没有减少到整数常量第13行:错误:case标签没有减少到整数常量第17行:错误:在':'标记之前的预期表达式.任何人都可以帮我这个.我没有正确地回答这个问题,或者我还有其他错误

#include<stdio.h>
main()
{
 int pa = 200;
 float net;
 printf("\n Enter purchased amount");
 scanf("%d",&pa);
 switch(pa)
 {
  case 1&&pa<=100:
     net=pa;
    break;
  case pa>=101&&pa<=200:    
        net=pa-(5.00/100.00)*pa;
    break;
 default:
         if(pa>=201&&pa<=500)
         net=pa-(7.5/100.00)*pa;
         if(pa>=501&&pa<=800)
         net=pa-(10.00/100.00)*pa;
         if(pa>=1000)
         net = pa - (15.00/100.00)*pa;
         break;

  }

  printf("\n the net amount to be paid is%f",net);
  getch();
 }
Run Code Online (Sandbox Code Playgroud)

小智 5

case label应该是编译时间常量.

你不能在case标签内部给出一个变量.必须在编译时评估标签中的表达式.

如果要在运行时分支,请使用if-else.