0

私の宿題では、if ステートメントと switch ステートメントの両方を使用して、顧客が支払った正味金額を次の詳細について比較するプログラムを作成するように求められました。

購入金額 (100-200) の場合、5% の割引が適用されます。

金額 (200-500) を購入すると、7.5% の割引が適用されます。

金額 (500-800) を購入すると、10% の割引が適用されます。

購入金額 (1000 以上) は、15% の割引を提供します。

これは私が思いつくことができるものですが、コンパイル中に次のようなエラーが表示されます

10 行目: エラー: ケース ラベルが整数定数に変換されません 13 行目: エラー: ケース ラベルが整数定数に変換されません 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();
 }
4

3 に答える 3

5

caselabel はコンパイル時定数である必要があります。

caseラベル内に変数を指定することはできません。ラベルの式は、コンパイル時に評価する必要があります。

実行時に分岐する場合は、 を使用しますif-else

于 2013-11-15T06:53:10.937 に答える
0

範囲関連の条件については、if/else 条件を使用することをお勧めします。スイッチ/ケースは定値条件用です。

    if (pa >= 1 && pa <= 100) {
        net = pa;
     } else if (pa>=101&&pa<=200) {
       net=pa-(5.00/100.00)*pa;
     } else if (pa>=201&&pa<=500) {
       net=pa-(7.5/100.00)*pa;
     } else if (pa>=501&&pa<=800) {
       net=pa-(10.00/100.00)*pa;
     } else if (pa>=1000) {
       net = pa - (15.00/100.00)*pa;
     } else {`<br/>
       /* invalid pa handling */
     }
于 2013-11-15T07:03:06.580 に答える
0

switch case を使用する場合は、正確な値 (定数) と照合する必要があります。それ以外の場合は、カスケードされた if を使用します

switch方法/case作業を読むだけ

于 2013-11-15T06:54:14.927 に答える