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

「キーボードから受け取った整数が偶数か奇数かを表示するプログラムを、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;
}
}

A 回答 (2件)

caseの後ろは 整数値などを書きます


この整数値は switchの引数で指定した式を評価した結果になります

偶数か奇数かでしたら
switch( a % 2 ) {
 case 1: // 奇数の場合
  printf("%dは奇数です\n", a);
  break;
 case 0: // 偶数の場合
  printf("%dは偶数です\n", a);
  break;
}
といった具合にします
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/24 08:48

★アドバイス


・回答者 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 );
 }

・以上。おわり。さようなら。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/24 08:49

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