- 余りが0なのか、1なのか、2なのか、をif文で判定すると...
- if文を入れ子にして、else ifをうまく使って
/* 4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n;
printf("整数を入力して下さい:");
scanf("%d", &n );
if( n % 4 == 0 )
printf("%d を4で割った余りは、0です。\n", n );
else if( n % 4 == 1 )
printf("%d を4で割った余りは、1です。\n", n );
else if( n % 4 == 2 )
printf("%d を4で割った余りは、2です。\n", n );
else /* n % 4 == 3 */
printf("%d を4で割った余りは、3です。\n", n );
}
/* end of mod0.c */
- 剰余を毎回計算しているのは無駄だから...
- 余りを変数に格納しておいて、
変数の値で場合分けする
/* 4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n, r;
printf("整数を入力して下さい:");
scanf("%d", &n );
r = n % 4;
if( r == 0 )
printf("%d を4で割った余りは、0です。\n", n );
else if( r == 1 )
printf("%d を4で割った余りは、1です。\n", n );
else if( r == 2 )
printf("%d を4で割った余りは、2です。\n", n );
else /* r == 3 */
printf("%d を4で割った余りは、3です。\n", n );
}
/* end of mod1.c */
- この様なelse ifを書き連ねるのに疲れたら...
- 場合分けのswitch文の出番だ!(但し、break; を忘れるな!)
/* 4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n, r;
printf("整数を入力して下さい:");
scanf("%d", &n );
r = n % 4;
switch( r ) /* 実は変数 r は不要で switch( n%4 ) で良い! */
{
case 0:
printf("%d を4で割った余りは、0です。\n", n );
break;
case 1:
printf("%d を4で割った余りは、1です。\n", n );
break;
case 2:
printf("%d を4で割った余りは、2です。\n", n );
break;
case 3:
printf("%d を4で割った余りは、3です。\n", n );
break;
default: /* 此処には絶対に来ないから、上の case 3: は default: でも良い! */
printf("此処には来ないはず!\n");
break; /* 一般に最後の break; は不要! */
}
}
/* end of mod2.c */
- 実は、余りを表示するだけなら、もっとスマートに実現できる!
/* 4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n, r;
printf("整数を入力して下さい:");
scanf("%d", &n );
r = n % 4;
printf("%d を4で割った余りは、%dです。\n", n, r );
/* 後でこの余り(r)を使わないのなら、
printf("%d を4で割った余りは、%dです。\n", n, n%4 );
と、変数 r も使わなくて良い! */
}
/* end of mod3.c */
- これでは練習にならないので、次のように仕様を変更!
仕様
- 整数をキー入力する
- その数nが4で割り切れるときは、「nは4で割り切れます。」と表示し、
その数nが4で割り切れないときは、「nを4で割った余りは、rです。」と余り求めて表示する
例:「26を4で割った余りは、2です。」
- 注:if を1個使って、switch は使わないで...
/* 4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n, r;
printf("整数を入力して下さい:");
scanf("%d", &n );
/* さーぁ考えよう! */
}
/* end of mod4.c */
- こんなこともできるぞ!〜switch文の便利な使い方〜
仕様
- 整数をキー入力する
- その数nが偶数か奇数か、そして4で割った余りを表示する
例:「26 は偶数で、4で割った余りは、2です。」
/* 偶奇を判定し、4で割った余りを求めて表示するプログラム */
#include <stdio.h>
main()
{
int n, r;
printf("整数を入力して下さい:");
scanf("%d", &n );
switch( r = n % 4 ) /* 代入式の値は左辺値の値となる */
{
case 0:
case 2:
printf("%d は偶数で、4で割った余りは、%dです。\n", n, r );
break;
case 1:
case 3:
printf("%d は奇数で、4で割った余りは、%dです。\n", n, r );
break; /* 一般に最後の break; は不要! */
/* 上で全ての場合が尽されているので、
default:
は不要! */
}
}
/* end of mod5.c */
- break; を省くことによって、複数の場合(case)を統合することもできるってこと!
- この仕様のプログラムをswitch文を使わずに実現してみよ!