2 つの数を入れ替えるプログラム

CBeginner
オンラインで実践に進む

はじめに

2 つの数を入れ替えるとは、それらの値を入れ替えることを意味します。この実験では、一時変数を使用する方法、加減算、ビット演算子、乗除算など、さまざまな方法を使って C 言語で 2 つの数を入れ替える方法を学びます。

注:コーディングを練習し、gcc を使ってコンパイルして実行する方法を学ぶには、自分で~/project/main.cファイルを作成する必要があります。

cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main

一時変数を使用する

一時変数を使って 2 つの数を入れ替えるには、次の手順に従います。

  1. xytempの 3 つの変数を宣言する。
  2. xyに値を代入する。
  3. xの値をtempに格納する。
  4. yの値をxに代入する。
  5. tempの値をyに代入する。
  6. xyの値を表示する。
#include <stdio.h>

int main() {
  int x = 5, y = 7, temp;

  // 手順 3
  temp = x;

  // 手順 4 と 5
  x = y;
  y = temp;

  // 手順 6
  printf("入れ替え後、x = %d で y = %d\n", x, y);

  return 0;
}

加算と減算を使用する

加算と減算を使って 2 つの数を入れ替えるには、次の手順に従います。

  1. xyに値を代入する。
  2. xyを加算し、その結果をxに代入する。
  3. xからyの元の値を引き、yに代入する。
  4. xの新しい値からyの元の値を引き、xに代入する。
  5. xyの値を表示する。
#include <stdio.h>

int main() {
  int x = 5, y = 7;

  // 手順 2 と 3
  x = x + y;
  y = x - y;

  // 手順 4
  x = x - y;

  // 手順 5
  printf("入れ替え後、x = %d で y = %d\n", x, y);

  return 0;
}

ビット演算子を使用する

ビット演算子を使って 2 つの数を入れ替えるには、次の手順に従います。

  1. xyに値を代入する。
  2. xyを排他的論理和(XOR)し、その結果をxに代入する。
  3. xの新しい値とyを排他的論理和し、その結果をyに代入する。
  4. xの新しい値とyを排他的論理和し、その結果をxに代入する。
  5. xyの値を表示する。
#include <stdio.h>

int main() {
  int x = 5, y = 7;

  // 手順 2 と 3
  x = x ^ y;
  y = x ^ y;

  // 手順 4
  x = x ^ y;

  // 手順 5
  printf("入れ替え後、x = %d で y = %d\n", x, y);

  return 0;
}

乗算と除算を使用する

乗算と除算を使って 2 つの数を入れ替えるには、次の手順に従います。

  1. xyに値を代入する。
  2. xyを乗算し、その結果をxに代入する。
  3. xの新しい値をyで割り、その結果をyに代入する。
  4. xの新しい値をyの新しい値で割り、その結果をxに代入する。
  5. xyの値を表示する。
#include <stdio.h>

int main() {
  int x = 5, y = 7;

  // 手順 2 と 3
  x = x * y;
  y = x / y;

  // 手順 4
  x = x / y;

  // 手順 5
  printf("入れ替え後、x = %d で y = %d\n", x, y);

  return 0;
}

まとめ

この実験では、一時変数を使う方法、加算と減算、ビット演算子、乗算と除算の 4 つの異なる方法を使って 2 つの数を入れ替える方法を学びました。2 つの数を入れ替えることは、2 つの値の順序を変更したり、2 つの変数の値を入れ替える必要がある演算を行う際に、プログラミングで役立ちます。