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

C言語で「1を渡すと2を、2を渡すと1を返す」関数を実装する方法

入力が1なら2を、入力が2なら1を返す関数を作る方法を紹介します。このような関数は、使用するロジックによってさまざまな方法で実装できます。最も簡単なのは条件分岐を使い、「数値が1なら2を返し、そうでなければ1を返す」とする方法です。そのほか、数学的な演算(引き算など)やXOR(排他的論理和)演算を利用する方法もあります。

実装例

以下のサンプルコードでは、if文を使う方法と、2つの数の合計(この場合は3)から入力値を引く方法の2通りを示しています。

#include <stdio.h>

// 方法1:if文を使う
int reverseif(int x) {
    if (x == 1) return 2;
    else return 1;
}

// 方法2:合計値(この場合は3)から引く
int reversesub(int x) {
    return (3 - x);
}

int main() {
    printf("%d\n", reverseif(1));
    printf("%d\n", reversesub(2));
    return 0;
}

実行結果

2
1

各方法の解説

方法1:if文による条件分岐

入力値が1かどうかを判定し、1なら2を、それ以外なら1を返します。ロジックが直感的で、誰が読んでも理解しやすいのが特徴です。

方法2:引き算による反転

1と2の合計は3なので、「3 - 入力値」を計算すると、1を渡せば2が、2を渡せば1が得られます。条件分岐が不要になるため、コードが非常に簡潔になります。

応用:XOR演算を使う方法

さらに、XOR(排他的論理和)を利用する方法もあります。1は2進数で「01」、2は「10」と表されるため、3(2進数で「11」)とのXORを取ると、1と2が入れ替わります。

int reversexor(int x) {
    return (x ^ 3);
}

この方法も分岐が不要で、ビット演算による高速な処理が可能です。可読性を重視するならif文、簡潔さや処理速度を重視するなら算術演算やXOR演算が適しています。状況に応じて最適な方法を選択するとよいでしょう。

  1. 【初心者向け】長方形の面積と外周を求めるC言語プログラムの書き方

    長方形の「長さ」と「幅」が与えられたとき、その面積と外周(周囲の長さ)を計算する方法を、C言語のサンプルコード付きでわかりやすく解説します。 長方形とは? 長方形とは、4つの辺と4つの直角(90度)を持つ2次元の図形です。長方形では、隣り合う辺の長さは異なりますが、向かい合う辺どうしは必ず同じ長さになります。また、2本の対角線も互いに等しい長さを持ちます。 下の図は長方形を模式的に表したものです。 ここで、Aは長方形の幅(breadth)、Bは長さ(length)を表しています。 面積と外周の計算式 面積の公式 長方形の面積は、次の式で求められます。 面積 = 長さ × 幅 外周の公式

  2. 競技プログラミングに役立つPythonの高速入出力(I/O)方法まとめ

    競技プログラミングでは、入力をいかに速く読み込めるかが勝敗を左右する重要なポイントになります。本記事では、Pythonにおけるさまざまな入出力(I/O)方法を、具体例とともにわかりやすく解説していきます。例として、CodeforcesやSPOJなどのオンラインジャッジで「4つの整数 a, b, c, d を読み込み、その積を出力する」というシンプルな問題を考えてみましょう。実装方法は複数あるため、順番に見ていきます。基本の入力方法方法1:リスト内包表記を使うa, b, c, d = [int(x) for x in input().split()]print(a*b*c*d)方法2:map関数