두 숫자의 값을 교환하는 C 언어
프로그램에 두 개의 숫자 a, b가 있는데, 여기서 a=4, b=5입니다. 이제 값을 교환하고 싶습니다. 두 숫자 중 a=5 , b=4가 됩니다.
추천 과정: C 언어 튜토리얼
방법 1: 임시 변수를 사용하여 저장합니다. 누구나 생각할 수 있는 가장 쉬운 방법이 될 것입니다
참조 코드:
#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; }
실행 결과:
방법 2: 덧셈과 뺄셈을 사용하여 교환 이 방법은 실제로 a+b의 결과를 변수 a에 임시 저장한 후 변경된 값을 사용하는 것입니다. a와 원본 b 뺄셈을 수행하여 교환된 b를 얻을 수 있지만 이 방법에는 결함이 있습니다. 즉, a와 b가 모두 int 유형이고 a+b의 결과가 범위를 벗어날 수 있습니다.
참조 코드:
#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; }
실행 결과:
방법 3: 곱셈과 나눗셈을 사용하여 교환 이 방법은 a+b 대신 a*b를 사용한다는 점을 제외하면 방법 2와 유사합니다. a 임시 저장, 나중에 같은 아이디어, 이 방법은 경계를 넘나드는 문제인 방법 2와 동일한 결함이 있으며 경계를 넘기가 더 쉽습니다.
참조 코드:
#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; }
방법 4: XOR 방식을 사용하여 교환. 이 방식은 기존의 out-of-bound 결함이 없으며 주로 XOR 값을 사용하는 완벽한 방식입니다. a^b 특성은 먼저 a에 저장됩니다. a^b^b=a이므로 교환이 원활하게 완료될 수 있습니다.
참조 코드:
#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; }
방법 5: 시프트 방법을 사용하여 원래 int 유형 a를 상위 16비트와 하위 16비트로 분할합니다. 이는 추가 16비트에 해당합니다. 임시 저장 공간을 재활용할 수 있습니다. 그러나 이 방법의 결점도 명백합니다. 즉, 할당된 a 또는 b가 16비트를 초과하면 이 방법에서 오류가 발생합니다.
참조 코드:
#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; }
실행 결과:
위 내용은 두 숫자의 값을 교환하는 C 언어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!