用C语言实现:交换两值的内容。

可能很多人都认为这道编程问题非常的简单,只需要设置一个中间变量,再通过赋值即可完成交换两值的内容。

那我们今天就进一步深究一下这道简单的问题:

最基础的代码如下:

#include<stdio.h>
int main()
{
 int a = 1, b = 2, t;
 printf("a=%d,b=%d\n", a, b);
 t = a;
 a = b;
 b = t;
 printf("a=%d,b=%d\n", a, b);
 system("pause");
 return 0;
}

但是如果题目要求不使用中间变量完成上述要求呢?

那么我们就需要好好考虑如何只使用给定的变量a、b进行交换操作。

我们可以令 a=a+b ,这时a已经是原来a的值加上b的值了。

再令 b=a-b ,则可完成b值的交换。

这时 a=a-b ,则完成了a值的交换。

代码如下:

#include <stdio.h>
int main()
{
    int a = 1,b = 2;
    printf("before:a=%d  b=%d\n", a, b);
    a = a + b;
    b = a - b;
    a = a - b;
    printf("after:a=%d  b=%d\n", a, b);
    system("pause");
    return 0;
}

但是经过反复考虑后,我们会发现这个算法其实存在一定的问题。
即当a、b数字很大时,则会发生溢出现象,超过int的整型范围。

这时我们就可以选择第三种算法进行编程,利用异或运算符进行编程。

代码如下:

#include <stdio.h>
int main()
{
    int a = 1;
    int b = 2;
    printf("before:a=%d  b=%d\n", a, b);
    a = a^b;
    b = a^b;
    a = a^b;
    printf("after:a=%d  b=%d\n", a, b);
    system("pause");
    return 0;
}

最后我们附上程序实验的结果:

时间: 2024-10-09 18:50:39

用C语言实现:交换两值的内容。的相关文章

【C语言】交换两个数组内容(数一样大)

#include<stdio.h> int main() {     int a[10],b[10];     int i=0;     printf("请输入数组a:\n");     for(i=0;i<sizeof(a)/sizeof(a[0]);i++)     scanf("%d",&a[i]);     printf("请输入数组b: \n");     for(i=0;i<sizeof(a)/size

C语言如何交换两变量值?5大方法告诉你!

写在前面: C语言中交换两个变量值的操作经常会用到,也有不少人提问诸如不用临时变量怎么交换两个变量值的问题,今天我们在这里进行一个总结,也算是对这个问题的统一回复,我一共总结了5种方法(名字都是我自己取的,不当之处还请批评指正),希望大家看完有所收获. 1.临时变量法 方法解释:采用临时变量的方法,作为中间过渡,这是最简单也是大家最容易想到的方法,此法在各种场合应用极多,应该熟练掌握. #include<stdio.h> int main(void) { int a=1,b=2,tmp; tm

c语言实现交换两个数的值

C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: 1 // 异或, a^=b^=a^=b; 2 a ^= b; 3 b ^= a; 4 a ^= b; 5 6 // 加减 7 a = a + b; 8 b = a - b; 9 a = a - b; 10 11 // 乘除 12 a = a * b; 13 b = a / b; 14 b = a/ b; 使用中间变量: 1 // 需临时空间 2 temp = a; 3 a = b; 4 b = temp; 正如你所

【c语言】 &nbsp; 交换两个整形变量的值(要求不创建临时变量)

如何不创建临时变量,来交换两个整形变量的值 异或运算 #include<stdio.h> int main() { int num1=12,num2=24;     printf("交换前的变量值");     printf("%d,%d",num1,num2);       num1=num1^num2;       num2=num1^num2;       num1=num1^num2;//异或  printf("\n交换后的变量值&qu

C语言中不允许创建临时变量,交换两个数的内容

在C语言中可以通过建立临时变量来实现两个变量的交换,当不允许建立临时变量时,应该怎样实现两变量的交换呢? 假设有两个变量num1和num2:下面通过两种方法进行分析. 方法一:利用加减法.具体算法分析如下: 由于num1+num2-num1=num2; num1+num2-num2=num1; 则将num1+num2赋给num1:num1-num2赋给num2:num1-num2赋给num1,这样就可以实现num1和num2两个数内容的交换.通过相同的思想,我们也可以将加减运算改为乘除运算,但此

C语言实现 &nbsp; 不允许创建临时变量,交换两个数的内容

#include "stdio.h" void main() { int a=1,b=2; a=a^b; b=a^b; a=a^b; printf("a=%d\n",a); printf("b=%d\n",b); }

C语言中交换两个数值的方法

//方法1    int  one = 1;    int two = 2;    int temp = 0;    temp = one;    one = two;    two = temp;    printf("one = %d\n", one);    printf("two = %d\n", two);            //方法2    int a1 = 5;    int a2 = 8;    a1 = a2 - a1;    a2 = a2

给定两个整型变量的值,将两个值的内容进行交换

#include "stdio.h" void swap(int*p1,int*p2) { int tmp=*p1; *p1=*p2; *p2=tmp; } void main() { int p1=1; int p2=2; int *num1=&p1; int *num2=&p2; swap(num1,num2); printf("p1=%d p2=%d\n",p1,p2); } 输出结果:p1=2,p2=1 2.不允许创建临时变量,交换两个数的内

简单的交换两个变量的数值

//给定两个整数,利用交换函数交换两个数的内容#include <stdio.h>void swap(int *x,int *y);/*函数声明*/int main (){ int a; int b; printf("请分别输入a.b的值\n"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); swap(&