- ベストアンサー
エラーが出ます。
「キーボードから受け取った整数が偶数か奇数かを表示するプログラムを、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; } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
caseの後ろは 整数値などを書きます この整数値は switchの引数で指定した式を評価した結果になります 偶数か奇数かでしたら switch( a % 2 ) { case 1: // 奇数の場合 printf("%dは奇数です\n", a); break; case 0: // 偶数の場合 printf("%dは偶数です\n", a); break; } といった具合にします
その他の回答 (1)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・回答者 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 ); } ・以上。おわり。さようなら。
お礼
ありがとうございました。
お礼
ありがとうございました。