Heim  >  Artikel  >  Backend-Entwicklung  >  C-Sprache zum Austauschen des Werts zweier Zahlen

C-Sprache zum Austauschen des Werts zweier Zahlen

angryTom
angryTomOriginal
2019-10-23 13:17:3415481Durchsuche

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:

C-Sprache zum Austauschen des Werts zweier Zahlen

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:

C-Sprache zum Austauschen des Werts zweier Zahlen

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:

C-Sprache zum Austauschen des Werts zweier Zahlen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn