Maison > développement back-end > Tutoriel C#.Net > Langage C pour échanger la valeur de deux nombres

Langage C pour échanger la valeur de deux nombres

angryTom
Libérer: 2019-10-23 16:53:41
original
15511 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

Étiquettes associées:
c
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal