int a = 1,b = 10
int temp = a /皮迟/ 将a的值先赋值给中间变量temp
a = b //然后把b的值指桥赋值给a
b = temp //最后再把temp中存的a的值赋值给b
System.out.println(a+" "+b)
这种交换过程就像一个圆环,圆环上有三个值,顺时针或逆时针的将值赋给前(后)的变量。从而实现数据的交换,许多排序方法也是通过中间变量来达到小的数值放前面,大的数值放后面。
不使用中间变量,通过加减运算符实现两个变量之间的数据交换。
int a = 10, b = 20
a = a+b //此时的a=30
b = a-b //b=30-20=10,a=30不变
a = a-b //a=30-10=20,a改变
System.out.println(a+" "+b)
不使用燃逗李中间变量,通过位运算符实现两个变量之间的数据交换。
int a = 11, b = 14 //二进制:a=8 —— 1011,b=14 —— 1110
a = a^b // a^b,异或运算,只有对应位数的值相等时才能返回1,否则返回0
// 所以a=a^b=1011^1110=1010
b = a^b // b=a^b=1010^1110=1011,即b=原本a的值
a = a^b // a=a^b=1010^1011=1110,即a=原本b的值
System.out.println(a+" "+b)
c语言中用函数交换两个变量的值方法是先将变量赋值给中间变量,然后中间变量再赋值给另外一个变量,程序如下:
#include "Stdio.h"
#include "Conio.h"
void swap(int x,int y)
{
int t,m
t=x //变量x赋值给中间变量李或t
m=y //变量y赋值给中间变量m
x=m //中间变量m赋值给变量x,将y的值赋值给了x。
y=t //中间变量t赋值给变量y,将x的值赋值给了y。
}
main()
{
int a,b
a=1,b=2
swap(a,b)//调用交换函数
printf("%d,%d",a,b)
getch()
}
扩展资料:
C语言的语法结构:
1、顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句枣拦就行,它的执行顺序是自上而下,依次执行。
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。
顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构。
2、选择结构
对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于凳扰胡构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。
选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
3、循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。
四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。
参考资料来源:百度百科-C语言
/*编写c语言程序,实现交换两个变量值的 *** 作。
要求:使用形参为指针的函数swap完成交换功能。
主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换
输出交换前后的变量枣卖值进行比较。
输入输出示例凳大逗:
Input
two
number:3
4
Before
change:a=3,b=4
After
change:a=4,b=3
*/
//File:
swap.c
#include
<stdio.h>
#include
<stdlib.h>
void
swap(int
*a,
int
*b)
{
int
tmp
tmp=*a
*a=*b
*b=tmp
}
int
main()
{
int
*a=NULL,*b=NULL
a=(int
*)calloc(1,sizeof(int))
if(!a)
{
perror("calloc
a
err.")
}
b=(int
*)calloc(1,sizeof(int))
if(!b)
{
perror("calloc
b
err.")
}
printf("Input
two
number:")
scanf("%d
%d",a,b)
printf("Before
change:a=%d,b=%d\n",*a,*b)
swap(a,b)
printf("After
change:a=%d,仿亮b=%d\n",*a,*b)
return
0
}
C:\mypro>gcc
-g
-Wall
swap.c
-o
swap
C:\mypro>swap
Input
two
number:3
4
Before
change:a=3,b=4
After
change:a=4,b=3
C:\mypro>
程序已调好,直接运行即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)