实现两个整数值的交换(无中间变量)

方法1:算术运算:
a = a + b;
b = a - b;
a = a - b;

方法2:位运算:
a ^= b;
b ^= a;
a ^= b;


#include<stdio.h>

int main()
{
    int a = 10;
    int b = 23;

    a = a + b;
    b = a - b;
    a = a - b;
    printf("%d, %d\n", a, b);

    a ^= b;
    b ^= a;
    a ^= b;
    printf("%d, %d\n", a, b);
}

运行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以定义一个函数,函数的参数是两个整型指针变量,函数内部通过指针变量交换两个整数。 具体实现如下: void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 调用该函数时,传入两个整型变量的地址即可实现两个整数交换,例如: int x = 10, y = 20; swap(&x, &y); // 交换x和y的 printf("x=%d, y=%d\n", x, y); // 输出x=20, y=10 ### 回答2: 在C/C++语言中,利用指针变量作为函数参数可以更方便地对变量进行操作或传递更复杂的数据结构。其中,指针是一种存储变量地址的数据类型,可以允许程序员在不知道变量的名称的情况下,通过其内存地址来访问或修改变量。而利用指针变量作函数参数可以实现两个整数交换,也是其中一种常见的应用。 具体来说,我们可以定义一个函数,其参数是两个指向整数变量的指针。在函数中,我们可以利用临时变量存储一个整数,然后交换两个指针所指向的整数,最后将临时变量复制给另外一个指针所指向的整数。其函数实现如下所示: ``` void swap(int *p1, int *p2) { int temp = *p1; *p1 = *p2; *p2 = temp; } ``` 在这个函数中,我们首先用temp变量存储了p1所指向的整数。接着,我们将p1所指向的整数更新为p2所指向的整数。然后,我们将p2所指向的整数更新为temp变量所存储的,也就是p1所指向的原来的整数。这样,我们就完成了两个整数交换操作。 在实际中使用这个函数时,我们只需将需要交换两个整数的地址作为参数传入函数即可。例如,如果要交换a和b两个整数,我们可以调用swap函数:`swap(&a, &b)`。由于参数p1和p2都是整数指针类型,因此我们需要使用取地址符“&”来获取a和b两个整数的地址。 总之,利用指针变量作函数参数实现两个整数交换是一种很实用的技巧。通过使用指针变量,我们不需要定义额外的临时变量,就可以交换两个整数。这不仅在程序设计中可以提高代码的复用性和可读性,而且还可以减少程序的开销,提高程序的运行效率。 ### 回答3: 在C语言中,如果要交换两个整数,可以采用中间变量的方式实现,即: ```c int a = 10, b = 20, temp; temp = a; a = b; b = temp; ``` 但是,也可以利用指针变量作函数参数来实现两个整数交换。具体实现方法如下: 1. 定义函数swap,它接收两个指向整数的指针变量a和b作为参数。 ```c void swap(int* a, int* b) ``` 2. 在函数中定义一个临时变量(temp),通过指针变量a和b获取它们指向的实际,将a指向的赋给temp,将b指向的赋给a,将temp赋给b。 ```c void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } ``` 3. 在主函数中,声明两个整数变量a和b,并对它们进行赋,然后调用函数swap,并将a和b的地址(即指针变量)作为参数传递给函数swap。 ```c int main() { int a = 10, b = 20; printf("Before swapping: a = %d, b = %d\n", a, b); swap(&a, &b); printf("After swapping: a = %d, b = %d\n", a, b); return 0; } ``` 上述代码的输出结果为: ```c Before swapping: a = 10, b = 20 After swapping: a = 20, b = 10 ``` 通过利用指针变量作函数参数,我们可以避免使用中间变量的方式来交换两个整数,代码更加简洁、高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值