Maison  >  Article  >  développement back-end  >  Langage C pour échanger la valeur de deux nombres

Langage C pour échanger la valeur de deux nombres

angryTom
angryTomoriginal
2019-10-23 13:17:3415481parcourir

Langage C pour échanger la valeur de deux nombres

Le langage C échange les valeurs​​de deux nombres

Il y a deux nombres a, b dans le programme, où a =4, b=5, maintenant je veux échanger les valeurs des deux nombres pour que a=5, b=4.

Cours recommandés : Tutoriel de langage C

Méthode 1 : Utilisez une variable temporaire pour enregistrer, cela devrait être la méthode la plus simple à laquelle tout le monde puisse penser

Code de référence :

#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;
}

Résultat d'exécution :

Langage C pour échanger la valeur de deux nombres

Méthode 2 : Utiliser l'addition et la soustraction pour échanger Cette méthode consiste en fait à enregistrer temporairement le résultat de a+b dans. la variable a, puis passez-la Soustrayez le a modifié du b d'origine pour obtenir le b échangé. Cependant, cette méthode a un défaut, c'est-à-dire que a et b sont tous deux de type int et le résultat de a+b. peut sortir des limites.

Code de référence :

#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;
}

Résultat de l'exécution :

Langage C pour échanger la valeur de deux nombres

Méthode 3 : Utiliser la multiplication et la division pour échanger, cette méthode est similaire à la méthode 2, sauf que a*b est utilisé à la place de a+b et est temporairement stocké dans a. Cette méthode a le même défaut que la méthode 2, qui est la. problème de hors limites, et il est plus facile de traverser les frontières.

Code de référence :

#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;
}

Méthode 4 : Utilisez la méthode XOR pour échanger Cette méthode n'a pas les hors limites précédentes. défaut.C'est une méthode parfaite.Cette méthode profite principalement de la fonctionnalité XOR pour enregistrer la valeur de a^b dans un premier temps. Parce que a^b^b=a, l'échange peut être effectué en douceur.

Code de référence :

#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;
}

Méthode 5 : utilisez la méthode shift pour diviser le type int d'origine a en valeurs élevées de 16 bits et les 16 bits inférieurs sont équivaut à 16 bits supplémentaires d'espace de stockage temporaire qui peuvent être retournés, mais le défaut de cette méthode est également évident, c'est-à-dire que si le a ou le b attribué dépasse 16 bits, cette méthode provoquera une erreur.

Code de référence :

#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;
}

Résultat de l'exécution :

Langage C pour échanger la valeur de deux nombres

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn