當前位置:首頁 » 編程語言 » 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-04-20 17:09:57 瀏覽:195
游樂園的密碼一般為多少 發布:2024-04-20 17:09:51 瀏覽:41
興元安卓機怎麼進系統 發布:2024-04-20 17:07:16 瀏覽:806
我的世界伺服器如何放村民 發布:2024-04-20 17:05:35 瀏覽:359
手機反編譯dex 發布:2024-04-20 17:01:01 瀏覽:704
安卓怎麼設置微信拍一拍 發布:2024-04-20 16:44:48 瀏覽:569
三星3熱點密碼怎麼設置 發布:2024-04-20 16:30:52 瀏覽:579
用keil編譯顯示警告warn 發布:2024-04-20 16:27:09 瀏覽:894
訪問在哪兒 發布:2024-04-20 16:20:42 瀏覽:201
安卓手機有什麼可以把聲音改成電音的軟體 發布:2024-04-20 16:19:40 瀏覽:564