• ベストアンサー

エラーが出ます。

「キーボードから受け取った整数が偶数か奇数かを表示するプログラムを、switch 文を使って作成する」 という問題で、プログラムを作ってみたのですが、エラーが出ます。 caseの後の%2==0 %2!=0の部分が間違っていると思うのですが、これは何と書けばいいでしょうか?偶数と、奇数の場合の条件の書き方はどうやるのでしょう? 回答お願いします。 #include<stdio.h> int main(void) { int a; scanf("%d",&a); switch(a) { case %2==0 : printf("%dは偶数です\n",a); break; case %2 != 0 printf("%dは奇数です\n",a); break; } }

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

caseの後ろは 整数値などを書きます この整数値は switchの引数で指定した式を評価した結果になります 偶数か奇数かでしたら switch( a % 2 ) {  case 1: // 奇数の場合   printf("%dは奇数です\n", a);   break;  case 0: // 偶数の場合   printf("%dは偶数です\n", a);   break; } といった具合にします

choobn
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・回答者 No.1 さんと同じく『case』の後ろは整数定数(記号定数など)しか記述できません。 ・よって、条件式を使う場合は『case』ではなく『if』文を使います。 ・『caseの後の%2==0 %2!=0の部分が間違っていると思う』→そう!間違っていますね。 ・短いですが『if』文の場合のサンプルを下に記述しておきます。→回答者 No.1 さんのでもOK! ★サンプル int main( void ) {  int a;  scanf( "%d", &a );    if ( (a % 2) == 0 ){   printf( "%dは偶数です\n", a );  }  else if ( (a % 2) != 0 ){ ←『else』だけでもOK!   printf( "%dは奇数です\n", a );  } } 補足: ・『case』は整数定数、記号定数のみしか記述できない。→文法上。 ・条件式を使うには必ず、『if()』、『else if ()』、『else』を使います。 ・最後に『(a % 2) != 0』の部分は『a & 0x1』で『奇数』と判定できますよ。  if ( a & 0x1 ){   printf( "%dは奇数です\n", a );  }  else{   printf( "%dは偶数です\n", a );  } ・以上。おわり。さようなら。

choobn
質問者

お礼

ありがとうございました。

関連するQ&A