Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でモジュロ(剰余)と除算を区別する方法

C言語には、除算に関連する2つの算術演算子が用意されています。それぞれの役割は以下のとおりです。

  • 剰余演算子(モジュロ):「%」で表され、整数除算の余りを返します。
  • 除算演算子:「/」で表され、除算のを返します。

プログラム1:基本的な使い方

#include<stdio.h>
int main(){
    int a, b, c;
    printf("enter a,b,c values:");
    scanf("%d%d%d",&a,&b,&c);
    printf("a/b=%d a%%b=%d\n", a/b, a%b);
    printf("(a+10)%%b=%d (a+10)/b=%d\n", (a+10)%b, (a+10)/b);
}

実行結果

enter a,b,c values:2 4 6
a/b=0 a%b=2
(a+10)%b=0 (a+10)/b=3

結果の解説

a=2、b=4 を入力した場合、各演算子は次のように動作します。

  • a/b → 2 ÷ 4 の商は 0
  • a%b → 2 ÷ 4 の余りは 2
  • (a+10)/b → 12 ÷ 4 の商は 3
  • (a+10)%b → 12 ÷ 4 の余りは 0

プログラム2:ポインタ変数を使った演算

次に、ポインタ変数を介してモジュロと除算を実行する例を示します。ポインタが指し示す先の値(*p1、*p2)に対して演算を行っている点がポイントです。

#include<stdio.h>
void main(){
    /* ポインタと変数の宣言 */
    int num1, num2;
    int *p1, *p2;
    int div, mod;

    p1 = &num1;
    p2 = &num2;

    /* ユーザー入力の読み込み */
    printf("Enter the values of num1 & num2: ");
    scanf("%d,%d",&num1,&num2);

    div = *p1 / *p2;
    mod = *p1 % *p2;

    /* 結果の出力 */
    printf("Division value = %d\n", div);
    printf("Modulus value = %d\n", mod);
}

実行結果

Enter the values of num1 & num2: 30,20
Division value = 1
Modulus value = 10

結果の解説

num1=30、num2=20 を入力すると、ポインタ p1・p2 が参照する値を使って計算が行われます。

  • 30 ÷ 20 の商(div)は 1
  • 30 ÷ 20 の余り(mod)は 10

「/」と「%」の違いまとめ

演算子名称返す値計算例(7 ÷ 2)
/除算3
%剰余(モジュロ)余り1

このように、「/」は商を、「%」は余りを求める演算子です。両者を組み合わせることで、割り切れるかどうかの判定や偶数・奇数の判定など、さまざまな処理に応用できます。

  1. C言語入門:モノリシックプログラミングとモジュラープログラミングの違いを徹底解説

    本記事では、C言語におけるモノリシックプログラミングとモジュラープログラミングの違いを、それぞれのメリット・デメリットとともに詳しく解説します。 モノリシックプログラミングとは プログラム全体を1つの関数、すなわちmain関数だけですべて記述する方式を「モノリシック(一枚岩)型プログラミング」と呼びます。しかし、すべてのロジックを単一の関数に詰め込むのは、良いプログラミングスタイルとは言えません。 デメリット モノリシックプログラミングには、以下のような欠点があります。 プログラムが非常に大きく、複雑になりやすい。 デバッグ、テスト、保守が非常に困難になる。 モジュラープログラミングとは

  2. C言語のシフト演算とは?左シフト・右シフト・補数の基本をわかりやすく解説

    問題 C言語を使用して、ある数値に対する左シフト・右シフト・補数(ビット反転)を求める簡単なプログラムを作成するには、どのようにすればよいのでしょうか。 解決方法 左シフト(<<) 変数の値を1ビットだけ左へシフトすると、その値は2倍になります。「a × 2」を計算したのと同じ結果です。 例:a = 10 の場合、a << 1 = 20 右シフト(>>) 変数の値を1ビットだけ右へシフトすると、その値は元の半分になります。「a ÷ 2」の整数除算と同じ結果です。 例:a = 10 の場合、a >> 1 = 5 サンプルプログラム 以下は、シ