• ACCP软件工程师
  • BENET网络工程师
  • JAVA+大数据
  • Python工程师
  • 云计算工程师
  • Web前端工程师
  • 软件测试工程师

c语言数据交换的几种方法

2013年06月07日 14:50供稿中心:兆隆教育

摘要: 这是个很common的例子,实现2个数据a,b的交换,a的值给b,b的值给a. 一般做法是借助中间变量缓存,实现交换。实现方法如下: #includestdio.h int main(void){ int a , b, t; scanf(%d%d, a, b); t = a; a = b; b = t; printf(%d %d\n, a, b); return 0; } 第

这是个很common的例子,实现2个数据a,b的交换,a的值给b,b的值给a.

  方法一:一般做法是借助中间变量缓存,实现交换。实现方法如下:

  #include<stdio.h>

  int main(void){

  int a , b, t;

  scanf("%d%d", &a, &b);

  t = a;

  a = b;

  b = t;

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

  return 0;

  }

  方法二:不用任何变量,使用强制相加,然后逐一分离,如下:

  #include<stdio.h>

  int main(void){

  int a , b;

  scanf("%d%d", &a, &b);//a = a1,b = b1

  a = a + b;//a = a1 + b1

  b = a - b;//b = a1 + b1 - b1  => b = a1

  a = a - b;//a = a1 + b1 - (a1 + b1 - b1) => a = b1

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

  return 0;

  }

  方法三:指针交换,例如:

  #include<stdio.h>

  int main(void){

  int a , b;

  scanf("%d%d", &a, &b);

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

  return 0;

  }

  方法四:还有一种是堆栈方式,改变出栈顺序,嵌入汇编如下:

  push a

  push b

  pop a

  pop b

  当然也可用c语言来实现堆栈函数,然后来完成a,b交换。

  总结:实现方式多种,有自己的优劣势。第一种常用,但多一个变量;第二种,少一个变量,但不常用;第三种简洁好用。第四种用堆栈的特性先进后出,改变出栈顺序实现交换。

 

©陕ICP备18020405号-2 Copyright  ©  2001-2018隶属于西安兆隆计算机培训中心版权所有