アプリ版:「スタンプのみでお礼する」機能のリリースについて

#include <stdio.h>

int main(void)
{
int a;

scanf("%d",&a);

switch(a)
{
case 1: printf("\nりんご\n"); break;
case 2: printf("\nバナナ\n"); break;
default: printf("\nその他\n"); break;
}
return 0;
}

C言語でプログラム練習しています
上の内容で正常に動くのですが
caseのところを例えば
1~10までは りんご
11~30までは バナナ
など1つの数字ではなく複数の数字にしたいのですがどうすればいいのでしょうか?
以前VBを少し経験したことがありまして
その際は
case 1 to 10
でできたのですがC言語ではできないみたいです
わかる方教えてください

A 回答 (6件)

1から5がバナナ、6から10がりんご としたい場合


switch( a ) {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("バナナ\n" );
    break;
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
    printf("りんご\n");
    break;
}
といった具合にしてやればいいですよ
飛んだ値でも可能です
1,3,5がバナナ 2,4,6がりんごならば
switch( a ) {
  case 1:
  case 3:
  case 5:
    printf("バナナ\n" );
    break;
  case 2:
  case 4:
  case 6:
    printf("りんご\n");
    break;
}
といった具合にします

caseを連続して記述して breakを最後のブロックだけに記述します
    • good
    • 0

#define MAX 50


int table[MAX + 1] = {
0, /* ダミー */
1,1,1,1,1,1,1,1,1,1, /* 1~10りんご */
2,2,2,2,2,2,2,2,2,2, /* 11~30ばなな */
2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,4,4,4,4,4, /* 31~35みかん、36~40なし */
5,5,5,5,5,5,5,5,5,5 /* 41~50ぶどう */
};

/* aは1~50 */
switch(table[a]) {
case 1:
りんご
break;
case 2:
ばなな
break;
case 3:
みかん
break;
case 4:
なし
break;
case 5:
ぶどう
break;
}
    • good
    • 0

switch( (a+9) / 10)

    • good
    • 2

#include <stdio.h>



int main(void)
{
  int a;

  scanf("%d",&a);

  switch(cnvNo(a))
  {
  case 1: printf("\nりんご\n"); break;
  case 2: printf("\nバナナ\n"); break;
  default: printf("\nその他\n"); break;
  }
  return 0;
}

int cnvNo(int a)
{
  if ((a >= 1) && (a <= 10))
  {
    return(1);
  } else if ((a >= 11) && (a <= 30)) {
    return(2);
  }
  return(-1);
}
    • good
    • 1

#include <stdio.h>



int main(void)
{
int i;

for(i = 0; i < 40; ++ i){
switch((1 <= i && i <= 30) + (11 <= i && i <= 30)){
case 1: printf("%2d りんご\n", i); break;
case 2: printf("%2d バナナ\n", i); break;
default: printf("%2d その他\n", i); break;
}
}
return 0;
}
    • good
    • 0

case 1:


case 2:

case 10:printf ("...");break;

のようにbreakしなければ求めてることは可能でしょう
長くなるようならif else使った方が見やすいと思います

お薦めはしませんがgcc拡張ではcase 0 ... 10のような書き方が可能です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!