int型の変数に入っている値をswitch文で偶奇判定するプログラムです。
int a = ...; switch( a % 2 ) { case 0: printf( "偶数です\n" ); break; case 1: printf( "奇数です\n" ); break; } |
入力された値が、偶数か奇数かを判定するには2で割った余りを見れば良く、余りが無ければ偶数で有れば偶数となります。C言語で2で割った余りを求めるには、剰余演算子の”%”を使用します。
ちなみに、上記の例はswitchでしたが、偶奇の判定は2分岐なのでifで書いたほうがすっきりします。
int a = ...; if ( a % 2 == 0 ) { printf( "偶数です\n" ); } else { printf( "奇数です\n" ); } |
ifの条件式はC言語の仕様上、”0の時はfalse,0以外の時trueと見なす”というルールです。
なので、上記コードはさらに簡略化できます。
int a = ...; if ( a % 2 ) { /* 条件式がtrueになる -> 2で割った余りが0ではない -> 奇数である */ printf( "奇数です\n" ); } else { printf( "偶数です\n" ); } |

Cの絵本―C言語が好きになる9つの扉
関連記事
すいません、上記のように自分もswitch文で作成してみたのですが、これでは負の奇数が入力された場合は表示されませんでした。case -1を追加する以外では、どのように変えればよいのでしょうか。
> c初心者さん
色々方法はありますが、以下のように符号を取って(数値の絶対値を取得して)判定する方法は如何でしょうか?
if ( abs(a)% 2 ) {