Ⅰ 用c语言实现从a到b的数据交换(不能使用第三个寄存器)
两个数交换应该有两种方法:一种是交换它们所指的地址,一种是交换它们的值。
从你的int *t=a;看你把a的地址先保存,应该是想交换他们的地址达到交换两数的目的。但要改变指针所指向的地址需要用二级指针(自已可以仔细理解下),所以你应该这样写才是交换他们的地址:
void swap( int **a, int **b)
{
int *t= *a;
*a= *b;
*b= t;
}
上面这个函数调用有点麻烦:
int x=9,y=0;
int *p1= &x;
int *p2= &y;
swap( &p1, &p2);
如果是交换地址所指向的地址的内容用一级指针就可以了。
void swap( int *a, int *b)
{
int t=*a;
*a= *b;
*b=t;
}
这种调用也很简单
int x, y;
swap( &x, &y);
Ⅱ c语言怎么不引入第三个变量是两个值交换
#include <stdio.h>
void swap(void *a,void *b,int size)
{
int i;
char *p=a,*q=b;
for(i=0;i<size;++i,++p,++q)
{
*q^=*p;
*p^=*q;
*q^=*p;
}
}
int main()
{
int a=1,b=2;
swap(&a,&b,sizeof(a));
printf("%d %d",a,b);
return 0;
}
Ⅲ C语言数值的交换
1
a
b中oxa23错误;c
4c1.5错误;d
10,000错误
2
c
for是关键字不能他用。
3
b
(1/2)*(a+b)*h中(1/2)直接为0,要想一样应该为:(1.0/2)或(1/2.0)
4
d
k+1没有改变k的值。
5
d
kk>=48
&&
kk<91,这个范围的符号不仅有大写字母还有别的。
6.正确,这是因为putchar()包含在改头文件中。
n=n/10;
Ⅳ 在C语言中如何将两个数进行互换
将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。
参考代码:
方法1:
inta=2,b=3,t;
t=a;//先将a存储到临时变量t中
a=b;//将b存储到a中
b=t;//将临时变量中的原a值存储到b中
printf("a=%db=%d ",a,b);
方法2:
inta=2,b=3,t;
a+=b;//把两数之和存到a中
b=a-b;//用两数和减去b可得原a,存储到b中
a=a-b;//因为b现在是原a值,所以,用两数和减去b(原a)可得原b,存储到a中
此方法,还可以用异或运算来实现,原理相同。
Ⅳ 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;
Ⅵ 有a b两个变量,要求不使用第三个变量,交换a b的值,用c语言这么写
#include <iostream>
using namespace std;
int main()
{
int a=100,b=3;
// 下面3句是关键
a=a+b;
b=a-b;
a=a-b;
printf("%d %d\n",a,b);
}
Ⅶ c语言中不引入第三变量交换两个变量
两个变量交换的三种方法
第一种
借助第三变量来实现;
第二种方法是利用加减法实现两个变量的交换,
第三种方法是得用位异或运算来实现,也是效率最高的一种
加减法交换
int
a
=
1;
int
b
=
2;
a
=
a
+
b;
b
=
a
-
b;
a
=
a
-
b;
位异或运算交换
int
a
=
1;
int
b
=
2;
a
=
a
^
b;
b
=
a
^
b;
a
=
a
^
b;
Ⅷ c语言如何编写两个数字数值交换
我们用C语言的时候,经常需要将两个数字交换,那么如何实现呢?下面小编给大家分享一下。
工具/材料
Dev C++
01
首先我们在Dev C++软件中新建一个C语言项目,如下图所示
02
接下来我们在C语言文件中声明两个数字并输出,如下图所示
03
然后用一个中间变量对他们进行交换,如下图所示
04
最后运行编写好的C语言文件,我们就可以看到如下图所示的交换结果了
Ⅸ c语言怎么实现两个数据交换
将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。
Ⅹ 有a b两个变量,要求不使用第三个变量,交换a b的值,用c语言这么写
a=a+b这个得到的是a和b的和;也就是这一步运行之后当前的a的值就是a,b之和。
b=a-b,既然a是他们两个的和,那么a-b得出的肯定是最初的a的值;这一步运行之后,b的只就是原始a的值;
a=a-b,既然b是原始a的值,a是原始a和原始b的和,那么差值肯定就是原始b的值。