Ⅰ 用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的值。