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

【C言語入門】3つ目の変数(一時変数)を使わずに2つの数値を入れ替える方法

C言語では、加算と減算の演算を組み合わせることで、3つ目の変数(一時変数)を用意せずに、2つの数値の格納場所を入れ替えることができます。

アルゴリズム

手順は以下のとおりです。

START

Step 1: 2つの変数 x と y を宣言する。
Step 2: キーボードから2つの数値を読み込む。
Step 3: 数値を入れ替える。
// 加算と減算の演算を使って数値を交換します
    i.  x = x + y
    ii. y = x - y
    iii.x = x - y
Step 4: x と y の値を出力する。

プログラム(加減算による入れ替え)

以下は、一時変数を使わずに2つの数値を入れ替える方法を示すCプログラムです。

#include<stdio.h>
int main(){
    int x,y;
    printf("enter x and y values:");
    scanf("%d%d",&x,&y);// 例として x=20、y=30 を入力
    x=x+y;// x=20+30=50
    y=x-y;// y=50-30=20
    x=x-y;// x=50-20=30
    printf("After swap x=%d and y=%d",x,y);
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter x and y values:20 30
After swap x=30 and y=20

仕組みのポイント

  • x に y を加算することで、両方の値の合計を x に保持します。
  • 合計から元の y を引けば元の x の値が残り、それを y に代入します。
  • 最後に合計から新しい y(元の x)を引くことで、x に元の y の値が入ります。

補足: 一時変数を使わない方法は加減算だけではありません。乗算と除算、さらにはビット単位のXOR演算子を使っても同じことが可能です。ただし、乗除算方式では値が0の場合やオーバーフロー発生時に正しく動作しない点に注意が必要です。

プログラム(乗算・除算による入れ替え)

続いて、乗算と除算を使って2つの数値を入れ替える例を見てみましょう。

#include<stdio.h>
int main(){
    int x,y;
    printf("enter x and y values:");
    scanf("%d%d",&x,&y);
    x=x*y;
    y=x/y;
    x=x/y;
    printf("After swap x=%d and y=%d",x,y);
    return 0;
}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter x and y values:120 250
After swap x=250 and y=120

計算の流れ

  • x = 120 × 250 = 30000
  • y = 30000 ÷ 250 = 120(元の x の値)
  • x = 30000 ÷ 120 = 250(元の y の値)

  1. Pythonで2つの変数の値を交換する方法【一時変数あり・なしの2パターン】

    はじめにプログラミングにおいて、2つの変数が持つ値を入れ替える「スワップ(交換)」処理は非常によく使われる基本操作です。この記事では、Pythonで変数を交換する2つの方法を、実際のコード例とともにわかりやすく解説します。方法1:一時変数を使う方法最も古典的で汎用的なのが、もう1つの一時変数(テンポラリ変数)を介して値を入れ替える方法です。他の多くのプログラミング言語でも同様の手法が使われます。>>> x = 10>>> y = 20>>> z = x # x の値を一時変数 z に退避>>> x = y # y

  2. Pythonで自然数の合計を求める3つの方法【while文・for文・sum関数】

    Pythonでは、自然数の合計を求める方法がいくつかあります。この記事では、whileループ、forループ、そして組み込み関数sum()を使った3つの方法を、具体的なコード例とともにわかりやすく解説します。 方法1:whileループを使う whileループを使用すると、変数iの値を1ずつ増やしながら、その値を累積的に加算していくことができます。以下の例では、最初の10個の自然数(1から10まで)の合計を計算しています。 s,i=0,0 n=10 while i<n: i=i+1 s=s+i print ("sum of first 10 natural num