そこで、教授は私たちにswitchステートメントを作成するように頼みました。 「SWITCH」のみステートメントを使用してプログラムを実行できます。彼は、数字を入力し、それが数字の範囲にある場合は表示し、次に示すようにどのブリーフケース番号を取得するかを望んでいます。さて...このタイプのプログラムでは、IFステートメントを使用する方が簡単です。ケース1の実行:ケース2:ケース3 ...ケース30は機能しますが、番号の範囲のために時間がかかりすぎます。
#include <stdio.h>
main()
{
int x;
char ch1;
printf("Enter a number: ");
scanf("%d",&x);
switch(x)
{
case 1://for the first case #1-30
case 30:
printf("The number you entered is >= 1 and <= 30");
printf("\nTake Briefcase Number 1");
break;
case 31://for the second case #31-59
case 59:
printf("The number you entered is >= 31 and <= 59");
printf("\nTake Briefcase Number 2");
break;
case 60://for the third case #60-89
case 89:
printf("The number you entered is >= 60 and <= 89");
printf("\nTake Briefcase Number 3");
break;
case 90://for the fourth case #90-100
case 100:
printf("The number you entered is >= 90 and <= 100");
printf("\nTake Briefcase Number 4");
break;
default:
printf("Not in the number range");
break;
}
getch();
}
私の教授は、これを行う方法にはもっと短い方法があると言ったが、その方法は教えない。私はそれを短縮することを考えることができる唯一の方法はIFを使用することですが、私たちは許可されていません。これをどのように実現できるかについてのアイデアはありますか?
GCCとCLangでは、次のようにケース範囲を使用できます。
_switch (x){
case 1 ... 30:
printf ("The number you entered is >= 1 and <= 30\n");
break;
}
_
唯一のクロスコンパイラソリューションは、次のようなcaseステートメントを使用することです。
_switch (x){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
printf ("The number you entered is >= 1 and <= 6\n");
break;
}
_
編集:switch (x / 10)
の効果に何かを使用することは、これを行うもう1つの良い方法です。範囲が_10
_の差ではない場合、GCCのケース範囲を使用する方が簡単かもしれませんが、一方で、教授は答えとしてGCC拡張を受け取らないかもしれません。
範囲に一貫性がある場合は、一部のデータを破棄できます。
switch (x / 10 )
{
case 0:
case 1:
case 2: // x is 0 - 29
break ;
// etc ...
}
それ以外の場合は、エッジの周りに少しハッカーをする必要があります。
Try this ...
#include <stdio.h>
main()
{
int x;
char ch1;
printf("Enter a number: ");
scanf("%d",&x);
int y=ceil(x/30.0);
switch(y)
{
case 1:
printf("The number you entered is >= 1 and <= 30");
printf("\nTake Briefcase Number 1");
break;
case 2:
printf("The number you entered is >= 31 and <= 60");
printf("\nTake Briefcase Number 2");
break;
case 3:
printf("The number you entered is >= 61 and <= 90");
printf("\nTake Briefcase Number 3");
break;
case 4:
printf("The number you entered is >= 91 and <= 100");
printf("\nTake Briefcase Number 4");
break;
default:
printf("Not in the number range");
break;
}
getch();
}