正如樓上所說,這個方法是很多的。我舉一個例子:
成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元尼勒克做網(wǎng)站,已為上家服務(wù),為尼勒克各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
#includestdio.h
void swap(double *x,double *y)//定義交換函數(shù)
{
double temp;
temp=*x;
*x=*y;
*y=temp;
}
main()
{
int i,j;
double st[]={5,3,1,6,2};
for(i=0;i=3;i++) //冒泡排序
for(j=0;j=3-i;j++)
if(st[j]st[j+1])
swap(st[j],st[j+1]);
for(i=0;i5;i++) //輸出
printf("%f\t",st[i]);
}
這個程序只能給5,3,1,6,2排序,要想給任意的數(shù)排序稍微改動一下就行了,請樓主自己完成,不會的話隨時可以問我。
首先 這個 答案 是錯的 ,
這樣寫 會直接 segmentation fault 先給你解釋下
char *s1="abc"; 編譯器會先 把 “abc” 這個 字符串 放到 ”常量區(qū)“ (值不能改) ,
在 分配一個 指針 s1 指向 “abc” 的 開頭 也就是 ‘a(chǎn)’ 這個 字符 ,
那就是了 swap() 要改 常量區(qū) 的 東西 , 所以 會直接 segmentation fault
現(xiàn)在 把 char *s1="abc" 改成 char s1[]="abc"; 或者 假設(shè) 那個 內(nèi)存可讀
然后說后面的
剛才講了 指針 只能 指向一個 地址 也就是 只能指向 一個 ‘點’
所以 s1 其實 是 指向 ‘a(chǎn)’ 這個 字符 *s1 操作的其實 是 ‘a(chǎn)’ 這個 字符
所以 第一個 字符 互相 交換了
C語言中swap函數(shù)是自定義的函數(shù),C標準庫里沒有swap函數(shù)。swap函數(shù)是用來交換的函數(shù),經(jīng)常在C語言中排序中會用到。
代碼示例:
#includestdio.h
void
swap(int
*a,
int
*b){
int
t;
t
=
*a;
*a
=
*b;
*b
=
t;
}
int
main()
{
int
a=23,b
=
43;
printf("輸入的兩個要交換的數(shù)為:%d,%d\n",a,b);
swap(a,b);
printf("交換后的數(shù)為:%d,%d\n",a,b);
return
0;
}
程序運行:
擴展資料
C語言中使用swap()函數(shù),要注意的是,想要交換a,b的值,其實就是相當于要在函數(shù)中改變變量的值,要做到這一點,就需要向形式參數(shù)傳遞實際參數(shù)的地址了,因為這樣把變量的地址復制到函數(shù)中的變量里,它們指向的是內(nèi)存中的同一個地方,在函數(shù)中改變這個地方的值,那么外部的變量的值也就改變了。
參考資料:搜狗百科-C語言
swap函數(shù)一般是一個程序員自定義函數(shù)。通常是實現(xiàn)兩個變量數(shù)值的交換。比如
int a = 2;
int b =3;
swap(a,b); //一般用到變量數(shù)值交換,交換后a=3 b = 2;
實現(xiàn)的方法多種多樣。比如下面幾種寫法:
1、通過使用臨時變量實現(xiàn)交換。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
2、通過臨時指針變量實現(xiàn)交換。
void swap2(int *x,int *y)
{
int *temp;
temp=x;
x=y;
y=temp;
}
3、借助指針加入臨時變量來實現(xiàn)交換。
void swap3(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
#include stdio.h
#define N 10
void Swap ( int *a, int *b, int n);
int main(void)
{
int *a, *b;
int num1[N], num2[N];
for (a = num1; a num1 + N; a++)
scanf ("%d", a);
for (b = num2; b num2 + N; b++)
scanf ("%d", b);
a = num1;//重新指向首地址
b = num2;//重新指向首地址
Swap (a, b, N);
printf ("*********交換后**********\n");
for (a = num1; a num1 + N; a++)
printf ("%3d", *a);
printf ("\n");
for (b = num2; b num2 + N; b++)
printf ("%3d", *b);
return 0;
}
void Swap (int *a, int *b, int n)
{
int temp;
int i;
for (i = 0; i n; i++)
{
temp = *(a + i);
*(a + i) = *(b + i);
*(b + i) = temp;
}
}
要用函數(shù)實現(xiàn)兩個數(shù)的交換,則函數(shù)參數(shù)必須定義為指針形式,否則函數(shù)中對數(shù)值的修改將不會影響主調(diào)函數(shù),這是C語言的規(guī)則。
所以,以整型為例,自定義函數(shù)書寫如下:
void swap_int(int*a,int*b)
{
int t;
t = *a;
*a=*b;
*b=t;
}