Cでの置換関数
1. 思想の順列
実際、, 私たちは、プログラムを構築する必要があります, 順列関数は、要素の値を交換します, 例えばシーケンサプログラムが典型的です.
順列へ 2 数, 一つは、私たちのよう想像することができます 2 ガラス. レモネードコンテナのガラス, Bカップ農薬容器. どのように我々は、カップレモン汁Bに移動し、カップに殺虫剤を移動します? 単により多くを使用します 1 女性のカップCカップと移動を開始:
- B1: CカップにレモンAのカップに注ぎます. =>中空, Cはレモンが含まれています
- B2: カップA => B空に農薬Bカップを注ぎます, 殺虫剤
- B3: => Bは、レモンが含まマグカップレモンC Bに注ぎます.
- OK. 農薬時間, レモネードを含むB.
2. 置換コード
我々はの値を交換しますプログラミングで同じ操作を行います 2 変数.
// e.g about swap in C - code by nguyenvanquan7826 #include <stdio.h> int main() { int a, b; printf("Nhap 2 so a, b:\n"); scanf("%d%d", &a, &b); printf("Ban da nhap:\na = %d \nb = %d\n", a, b); int temp = a; a = b; b = temp; printf("Sau khi hoan vi:\na = %d\nb = %d\n", a, b); return 0; }
結果:
インポート 2 そう, B:
3
6あなたが入力しました:
= 3
B = 6順列の後:
= 6
B = 3
OK. 今置換関数を参照の星に分割してみてください:
3. Cでの置換関数
// e.g about swap in C - code by nguyenvanquan7826 #include <stdio.h> void hoanvi(int a, int b) { int temp = a; a = b; b = temp; } int main() { int a, b; printf("Nhap 2 so a, b:\n"); scanf("%d%d", &a, &b); printf("Ban da nhap:\na = %d \nb = %d\n", a, b); hoanvi(a, b); printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b); return 0; }
結果:
インポート 2 そう, B:
3
6あなたが入力しました:
= 3
B = 6コールhoanvi後、:
= 3
B = 6
ああ, 私たちは、結果の並べ替えを持っていないのはなぜ?
このプログラムでは、我々が構築 1 間の位置を変更するには、置換関数 2 端子aとb, しかし、我々は、の値をとるべき値を使用して、bは変化しない、即ち、それらは同じ順列ではない.
あなたは、関数呼び出しすなわち、参照によって渡された値を理解します Honvi(ザ·, B) aとbの値は、直ちに (3 と 6) 機能ではなく、変数aに含まれます, B有効にしてください, bの機能が終了したとき、私たちは変化しませんでした.
次のように正しいコードがあります:
// e.g about swap in C - code by nguyenvanquan7826 #include <stdio.h> void hoanvi(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a, b; printf("Nhap 2 so a, b:\n"); scanf("%d%d", &a, &b); printf("Ban da nhap:\na = %d \nb = %d\n", a, b); hoanvi(&a, &b); printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b); return 0; }
結果:
インポート 2 そう, B:
3
6あなたが入力しました:
= 3
B = 6順列の後:
= 6
B = 3
我々は顎でビルド上記hoanvi 2 引数があります *a
と *b
int型. *a
と *b
すなわち、ポインタaとbのポインタ. 関数の本体では、書き込み *a
, *b
(最高経営責任者(CEO: int temp = *a
) その後、看板 *
ポインタAの値を表します.
すなわち、変数のアドレスを送信するために私たちを呼び出すときに関数ポインタを使用する必要がありますので hoanvi(&a, &b)
, ここで記号 &
変数aと変数bのアドレスを取得するには.
4. C ++の関数の順列で
あなたがCを記述する場合++ (.cppファイルで終わるファイル) 次のように彼らは、コンテンツを少し簡単に順列を書くことができます.
// e.g about swap in C - code by nguyenvanquan7826 #include <stdio.h> void hoanvi(int &a, int &b) // only in C++, file .cpp { int temp = a; a = b; b = temp; } int main() { int a, b; printf("Nhap 2 so a, b:\n"); scanf("%d%d", &a, &b); printf("Ban da nhap:\na = %d \nb = %d\n", a, b); hoanvi(a, b); printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b); return 0; }
または関数を使用することができます スワップ 図書館で利用可能 アルゴリズム
#include <stdio.h> #include <algorithm> // swap int main() { int a, b; printf("Nhap 2 so a, b:\n"); scanf("%d%d", &a, &b); printf("Ban da nhap:\na = %d \nb = %d\n", a, b); std::swap(a, b); printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b); return 0; }
またはあまりにも! 今は知ってるでしょ
この場所全体を説明していただけますか?
int型温度= A;
a = b;
b =温度;
それはあります 3 tempを介してaとbの値を交換するコマンド. はいのように 2 一杯の水A, Bはレモンを持って欲しい, 交換したい場合は、何も入っていない一杯の温度が必要です.
では、int tempの宣言は何ですか?
整数変数を宣言することです, intaと同じ, int b.
問題が私に順列を要求するかどうか尋ねてもいいですか? 5 一時変数を引き続き使用できますか??
それは正しい.
ねえ、私にあなたを知ってもらいましょう , 私が私と経験を教え、共有できるように、zaloを介して私と友達を作ってください。 .0966771824.ぜひご参加ください