>  기사  >  백엔드 개발  >  두 숫자의 값을 교환하는 C 언어

두 숫자의 값을 교환하는 C 언어

angryTom
angryTom원래의
2019-10-23 13:17:3415498검색

두 숫자의 값을 교환하는 C 언어

두 숫자의 값을 교환하는 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;
}

실행 결과:

두 숫자의 값을 교환하는 C 언어

방법 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;
}

실행 결과:

두 숫자의 값을 교환하는 C 언어

방법 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 언어

위 내용은 두 숫자의 값을 교환하는 C 언어의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:C++ 예외 처리 방법다음 기사:C++ 예외 처리 방법