A. 用c语言交换两个数
#include<stdio.h>
voidmain(){
intx,y,temp;
scanf("%d%d",&x,&y);
temp=x;
x=y;
y=temp;
printf("%d%d",x,y);
}
运行示例:
B. c语言交换两个数的问题
两段代码的差异是:
第一段代码:将a、b两个数的地址传入swap()函数,此函数内部拿着这两个数的地址,将两个地址下的值做了交换;
第二段代码:将a、b两个数的地址传入swap()函数,此函数内部将这两个地址彼此做了交换(即两个指针所指的地址发生了互换,但相应地址下的数并没有变化)。因为对于函数swap()来说,传入的两个地址是值传递形式的,在其内部是局部作用域下的两个变量,完成这两个地址“值”的交换,并不能对调用时的实参产生影响。故而交换失败。
另外,再给你个无需中间变量交换两个数值的写法:
a
=
b
-
a
+
(b
=
a);
//
无需中间变量交换a、b的值
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语言指针的知识
D. 关于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语言中的实参与形参,形参在使用中只是实参的副本,若形参是指针,我们可以通过形参改变实参地址中的内容,但无法改变实参本身的值!
E. c语言怎么实现两个数据交换
将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。
F. 在C语言中如何将两个数进行互换
定义 A ,B, C,
把A保存到C
把B保存到A
把C保存到B
这要就OK了!
int a, b , c;
c = a;
a = b;
b = c;
G. c语言如何编写两个数字数值交换
我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面我给大家分享一下。
工具/材料
Dev C++
- 01
首先我们在Dev C++软件中新建一个C语言项目,如下图所示
- 02
接下来我们在C语言文件中声明两个数字并输出,如下图所示
- 03
然后用一个中间变量对他们进行交换,如下图所示
- 04
最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了
H. C语言交换两个数字的代码
首先要捋顺一下,先看第一段程序。这段程序的目的就是为了将两个变量的数值进行交换。此时要明白指针的使用方法,这里的交换函数是void swap(int &x, int &y),即无返回值的函数,函数传递的参数是int &x和int &y,这两个东西是什么呢?这两个东西是定义的引用,而这个我们就可以理解为是两个用来存储传递进来的参数的地址的变量(这么说可能有点乱,其实就是将调用该函数是时传递进来的变量的地址给这两个参数),所以如果在这个swap函数中对这两个参数操作时,实际上就是对传递进来的那两个变量进行操作。至于你问的关于整型的问题,这个也很好理解,在c语言里地址就是整型的,而这两个变量定义的时候也是int整型的,所以无论是地址还是值都是整型的,而又因为*a和*b是一个指针指向的值,所以*a、*b是整型,而&a、&b是指针的地址,所以也是整型。
接下来看你第二段程序(你自己写的这个):
看程序前请仔细查看关于函数方面的资料,至于你这个return为什么是错的这个问题其实很简单,首先要了解一个函数的定义,定义函数简单的可以分为有返回值和无返回值的,有返回值的定义类似这样
int abc();
float bcd();
如上所示,函数名什么的都好理解,函数名前面的"int"和"float"是指函数返回的类型,即你这个函数在执行完之后需要用return语句返回一个值,而这个返回类型就是指这个返回值的类型。
还有一种是不需要返回值的,即
void abc();
void cde();
这类函数在执行完成后不需在最后添加return语句来返回值,如果添加了也用不了。
而你写的这个函数定义的是
int swap(int x,inty)
这里声明的是一个需要返回整型变量的函数,而这个函数里你的返回值语句return后没有跟任何变量或值,程序不知道你返回的是什么东西,所以会报错,这里一般都会填写return 0;表示程序执行完成。当然这个0也可以换成整型的变量。
最后说一下你这个程序,你这个程序在执行完成后是不会将需要交换的变量a和b的值进行交换的。这个关系到形参和实参的概念,请仔细查看书籍或看一些例子,你这个只是将形参的值交换了,真正的需要交换的值不会改变,也就是说你只是将a和b的两个值复制了一份,然后将复制了的那个交换了,当swap函数完成后又将复制了的那份删除掉了,所以说,不管怎样最初的a和b都没有受到任何影响。
I. c语言函数的使用,定义一个交换函数 实现2个数字的交换。
void Swap(int&x,int&y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
Swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
system("pause");
return 0;
}
运行结果:
(9)c语言将两个数字交换扩展阅读:
用指针交换:
void Swap(int*x,int*y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x=1;
int y=2;
Swap(&x,&y);
printf("x=%d,y=%d ",x,y);
system("pause");
return 0;
}
运行结果:
X=2;Y=1