当前位置:首页 » 编程语言 » c语言中交换两个数

c语言中交换两个数

发布时间: 2022-05-15 01:35:48

c语言如何编写两个数字数值交换

我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面小编给大家分享一下。
工具/材料
Dev C++
01
首先我们在Dev C++软件中新建一个C语言项目,如下图所示
02
接下来我们在C语言文件中声明两个数字并输出,如下图所示
03
然后用一个中间变量对他们进行交换,如下图所示
04
最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了

㈡ 关于C语言交换两个数(有关指针)

在C语言中,通过函数参数传递,进行两个数的交换,必须采用传递指针的方式,同时,在函数中,一定要对两个指针中的数据内容进行交换才能达到交换实参地址中数据的目的。

如:

//正确的交换函数
voidswap1(int*p1,int*p2)
{
intp;
p=*p1;//通过*引用地址中的数据,进行交换
*p1=*p2;
*p2=p;
}
//错误的交换函数
voidswap2(int*p1,int*p2)
{
int*p;
p=p1;//这里进行改变的是形参的值,而形参只是实参的一个副本,形参本身的变化,是不能改变实参的值的!!
p1=p2;
p2=p;
}

PS:要正确认识C语言中的实参与形参,形参在使用中只是实参的副本,若形参是指针,我们可以通过形参改变实参地址中的内容,但无法改变实参本身的值!

㈢ C语言交换两个数字

#include<stdio.h>
void
swap(int
&x,
int
&y)
{
int
t;
t=x;
x=y;
y=t;
}
void
main()
{
int
a=3,
b=4;
swap(a,b);
printf("a=%d
b=%d",a,b);
}
为什么
&x,&y是整形?为什么有时候*a
*b也能是整形???
//==================================================================
上边这个程序能正常编译码,应该报错的
void
swap(int
&x,
int
&y)
的定义不正确
改成void
swap(int
*x,
int
*y),参数是整型指针,
而你的swap(a,b);传递的是整型变量而不是指针
改成swap(&a,&b);,
这是C语言的指针的知识,也是C语言最诡异的东西
//==================================================================
这是我自己写的
为什么return有错误呢?
#include<stdio.h>
int
swap(int,int);
main()
{
int
a,b;
scanf("%d%d",&a,&b);
swap(a,b);
printf("%d
%d",a,b);
}
int
swap(int
x,int
y)
{
int
t;
t=x,x=y,y=t;
return;
}
//=================================================
int
swap(int
x,int
y)的参数是整型变量,
传递的是形式参数
swap(a,b);
虽然传递了参数,但是传递的是形式参数,
在swap函数的处理是不会改变a,b,的值的
//================================================
建议参考C语言参数传递和C语言指针的知识

㈣ c语言怎么实现两个数据交换

将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。

㈤ c语言实现两数交换

函数的值传递是单向传递,不能由形参改变实参的值。因此要用到指针,函数如下。#include
<stdio.h>
void
main()
{void
f(int
*a,int
*b);<br>int
*p1,*p2,m,n;<br>scanf("%d%d",&m,&n);<br>p1=&m,p2=&n;<br>f(p1,p2);<br>printf("m=%d,n=%d",m,n);<br>}
void
f(int
*a,int
*b)
{int
c;<br>c=*a;<br>*a=*b;<br>*b=c;<br>}

㈥ C语言交换两个变量数值的几种方法

int 类型为例, 可以用两种

安全交换: 使用中间变量(无论直接用,还是用指针或者引用, 都一样)

inta=1,b=2;
intt;
t=a;
a=b;
b=t;

不安全交换: 不使用中间变量,可能会溢出

inta=1,b=2;
a=a+b;
b=a-b;
a=a-b;

㈦ 用c语言交换两个数

#include<stdio.h>
voidmain(){
intx,y,temp;
scanf("%d%d",&x,&y);
temp=x;
x=y;
y=temp;
printf("%d%d",x,y);
}

运行示例:

㈧ C语言 交换两个数

c语言默认是返回i整形值,但最好不要省略返回值类型,可读性不好,并在以后使用时会引发错误.
还有你的swip函数中交换值是没有作用的,因为c中除了数组名外,其它所有类型的参数都是传引用,即把当前变量的值的一份拷贝传给函数,而不是真正直接改变被拷贝变量的值.拷贝的意思是,假如你声明变量x = 5 y =7,则你在调用函数swip(x,y)的时候 x , y 是在内存中临时创建的另外两个局部变量,只不过他们的名字被定义为x , y 他们和前面定义的 x , y 有相同的值 。但是区别是swip
中的 x,y会在执行完swip函数自动消失,他们的值也跟着消失。结果相当于你的函数根本没有使用在main方法中声明的x , y(这x里不好画图,也许不太明确。)所以即使你的swip函数是正确的,你的main函数的输出结果也是不会交换值 的。要想用swip函数完成换值,需将main中声明的
x , y 的地址传给swip,同时swip中的形参类型也要变成swip(int *x , int *y)(int a ; a = *x , *y = *x , *x = a)如果你看不懂的话先去看一下指针的内容,弄清函数的穿值 调用和传引用调用。建议你去看一看<<c和指针>>的函数一章,希望能帮到你 。 还有,交换两个值还有其它的方法,不妨去搜一下。

㈨ c语言用指针交换两个数


huan(int
*p1,int
*p2)这个函数中,交换的只是两个指针的指向,但是函数的结束、返回,这两个指针本身就消失了(它们的值并不会传回到main()函数中)所以,最后的结果没有交换。
如果要起到交换的作用,这个函数应该这样写:
void
huan(int
*p1,int
*p2)
{
int
t;
t=*p1;
*p1=*p2;
*p2=t;
}

㈩ c语言交换两个数的问题

两段代码的差异是:
第一段代码:将a、b两个数的地址传入swap()函数,此函数内部拿着这两个数的地址,将两个地址下的值做了交换;
第二段代码:将a、b两个数的地址传入swap()函数,此函数内部将这两个地址彼此做了交换(即两个指针所指的地址发生了互换,但相应地址下的数并没有变化)。因为对于函数swap()来说,传入的两个地址是值传递形式的,在其内部是局部作用域下的两个变量,完成这两个地址“值”的交换,并不能对调用时的实参产生影响。故而交换失败。
另外,再给你个无需中间变量交换两个数值的写法:
a
=
b
-
a
+
(b
=
a);   
//
无需中间变量交换a、b的值

热点内容
二级程序编译答案 发布:2024-05-03 18:41:35 浏览:652
领动自动精英版是哪个配置 发布:2024-05-03 18:37:30 浏览:149
java编译器中cd什么意思 发布:2024-05-03 18:36:00 浏览:388
传奇服务器如何刷钱 发布:2024-05-03 18:36:00 浏览:976
安卓版twitter怎么注册 发布:2024-05-03 18:28:05 浏览:893
Python逻辑优先级 发布:2024-05-03 18:26:14 浏览:266
linux查看svn密码 发布:2024-05-03 18:12:47 浏览:803
地铁逃生怎么进入游戏安卓 发布:2024-05-03 17:49:35 浏览:992
aws云存储 发布:2024-05-03 17:48:50 浏览:954
安卓微信王者号怎么转成苹果 发布:2024-05-03 17:44:38 浏览:745