Heim > Artikel > Backend-Entwicklung > C-Sprache zum Austauschen des Werts zweier Zahlen
C-Sprache tauscht die Werte zweier Zahlen aus
Es gibt zwei Zahlen a, b in das Programm, wo a =4, b=5, jetzt möchte ich die Werte der beiden Zahlen so vertauschen, dass a=5, b=4.
Empfohlene Kurse: C Language Tutorial
Methode 1: Verwenden Sie eine temporäre Variable zum Speichern. Dies sollte für jeden die einfachste Methode sein
Referenzcode:
#include <stdio.h> int main() { int a = 4; int b = 5; int nTemp; printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); nTemp = a; a = b; b = nTemp; printf("----------------------------------我是分割线------------------------------------\n"); printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
Laufendes Ergebnis:
Methode 2: Addition und Subtraktion zum Austausch verwenden Diese Methode bedeutet tatsächlich, das Ergebnis von a+b vorübergehend zu speichern Subtrahieren Sie das geänderte a vom ursprünglichen b, um das ausgetauschte b zu erhalten. Diese Methode weist jedoch einen Fehler auf, dh sowohl a als auch b sind vom Typ int und das Ergebnis ist a + b kann ins Aus gehen.
Referenzcode:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a + b; b = a - b; a = a - b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
Laufergebnis:
Methode 3: Verwenden Sie Multiplikation und Division zum Austauschen Diese Methode ähnelt Methode 2, außer dass a*b anstelle von a+b verwendet und vorübergehend in a gespeichert wird. Diese Methode weist den gleichen Fehler auf wie Methode 2 Problem des Out-of-bounds, und es ist einfacher, die Grenze zu überschreiten.
Referenzcode:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a * b; b = a / b; a = a / b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
Methode 4: Verwenden Sie die XOR-Methode, um auszutauschen. Diese Methode weist nicht die vorherigen Out-of-bounds auf Defekt. Diese Methode nutzt hauptsächlich die Eigenschaften von XOR, um den Wert von a^b=a zu speichern.
Referenzcode:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a ^ b; b = a ^ b; a = a ^ b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
Methode 5: Verwenden Sie die Verschiebungsmethode , um den ursprünglichen int-Typ a in hohe Werte von 16 Bits und die unteren 16 Bits aufzuteilen Dies entspricht 16 weiteren Bits an temporärem Speicherplatz, die umgedreht werden können. Der Fehler dieser Methode liegt jedoch auch auf der Hand: Wenn das zugewiesene a oder b 16 Bits überschreitet, führt diese Methode zu einem Fehler.
Referenzcode:
#include <stdio.h> int main() { int a = 32123; int b = 12345; printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a <<= 16; a |= b; b = a >> 16; a = a & 0xffff; printf("----------------------------------我是分割线------------------------------------\n"); printf("交换前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
Laufergebnis:
Das obige ist der detaillierte Inhalt vonC-Sprache zum Austauschen des Werts zweier Zahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!