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