Le langage C échange les valeursde 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 :
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 :
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 :
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!