【C语言】五种方法交换两个数(免费复制)

【C语言】五种方法交换两个数(免费复制)

方法一:

通过中间变量t直接交换。

#include

//方法一

int main()

{

int a,b,t;

printf("请输入a和b的值:\n");

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

printf("交换前:a=%d,b=%d\n",a,b);

t=a;

a=b;

b=t;

printf("交换后:a=%d,b=%d\n",a,b);

}

方法二:

利用指针,将两个指针指向的变量的值进行交换,只改变内存单元的值,不改变指针指向的内存单元。

#include

//方法二

int main()

{

int a,b,t;

int *p1=&a,*p2=&b;

printf("请输入a和b的值:\n");

scanf("%d %d",p1,p2);

printf("交换前:a=%d,b=%d\n",*p1,*p2);

printf("交换前:p1=%d,p2=%d\n",p1,p2);

t=*p1;

*p1=*p2;

*p2=t;

printf("交换后:a=%d,b=%d\n",*p1,*p2);

printf("交换后:p1=%d,p2=%d\n",p1,p2);

return 0;

}

方法三:

利用指针,改变两个指针的指向,如原p1指向a,p2指向b,现在p1指向b,p2指向a。

#include

//方法三

int main()

{

int a,b;

int *p1=&a,*p2=&b,*p;

printf("请输入a和b的值:\n");

scanf("%d %d",p1,p2);

printf("交换前:a=%d,b=%d\n",*p1,*p2);

printf("交换前:p1=%d,p2=%d\n",p1,p2);

p=p1;

p1=p2;

p2=p;

printf("交换后:a=%d,b=%d\n",*p1,*p2);

printf("交换后:p1=%d,p2=%d\n",p1,p2);

return 0;

}

注意和方法二对比p1 p2的变化。

方法四:

写一个交换的子函数(同样利用指针),本质仍然是交换内存单元的值,但注意调用函数的实参应该用地址,因为被调用函数的形参是指针变量,指针就是地址,所以实参也必须是地址。

#include

//方法四

int swap(int *x,int *y)

{

int t;

t=*x;

*x=*y;

*y=t;

}

int main()

{

int a,b;

printf("请输入a和b的值:\n");

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

printf("交换前:a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("交换后:a=%d,b=%d\n",a,b);

return 0;

}

方法五:

通过对两位待交换的数进行按位异或操作,进行三次该操作,即可交换两个数。

#include

int main()

{

int a,b;

printf("请输入两个整数:\n");

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

printf("交换前:a=%d,b=%d\n",a,b);

a=a^b;

b=a^b;

a=a^b;

printf("交换后:a=%d,b=%d\n",a,b);

return 0;

}

相关推荐

三星电视音量怎么调节(详细操作指南)
怎么无限注册365游戏账号

三星电视音量怎么调节(详细操作指南)

🕒 07-13 👀 5226
+12V如何转换成-12V?
日博365体育

+12V如何转换成-12V?

🕒 08-02 👀 8955
刷宝游戏有哪些好玩 十大经典刷宝游戏推荐
日博365体育

刷宝游戏有哪些好玩 十大经典刷宝游戏推荐

🕒 08-19 👀 3278