① c語言編寫兩個函數,min實現返回最小值下標,swap交換任意兩個函數的值,主函數實現數組(任意數
#include <stdio.h>
int a[8]={5,8,6,9,3,1,2,4};
int min(int x,int y)
{return a[x]<a[y]?x:y;
}
void swap(int *a,int *b)
{int t;
t=*a;*a=*b;*b=t;
}
int main()
{int i,j,t;
for(i=0;i<7;i++)
for(j=0;j<7-i;j++)
if(min(j,j+1)!=j)swap(&a[j],&a[j+1]);
for(i=0;i<8;i++)
printf("%d ",a[i]);
printf(" ");
return 0;
}
② C語言中swap的作用和用法
swap函數一般是一個程序員自定義函數。
通常是實現兩個變數數值的交換,用法比較廣泛。
可使用臨時變數實現交換;可通過臨時指針變數實現交換;可藉助指針加入臨時變數來實現交換。
return 0;
}
swap1: x:4,y:3
swap2: x:4,y:3
swap3: x:3,y:4
swap4: x:4,y:3
swap5: x:3,y:4
swap6: x:4,y:3
swap7:ppx:3,ppy:4
拓展資料:
計算機中swap函數很多,在不同領域有不同的用法,但都是交換的意思。比如字元串交換swap操作實現交換兩個容器內所有元素的功能。要交換的容器的類型必須匹配: 必須是相同類型的容器,而且所存儲的元素類型也必須相同。調用了swap函數後,右操作數原來存儲的元素被存放在左操作數中,反之亦然。
③ 求一個C語言程序題:編寫一個函數SWAP()實現交換兩個數位置的功能
#include <stdio.h>
void swap(int *p, int *q);//用傳地址的方法交換
void main()
{
int i, j;
scanf("%d%d", &i, &j);//從鍵盤輸入兩個交換的數
swap(&i, &j);//傳入i,j的地址
printf("i = %d, j = %d\n", i, j);//輸出交換後的兩個值
}
void swap(int *p, int *q)
{
int temp;//定義臨時變數 存放中間值
temp = *p;
*p = *q;
*q = temp;
}
注意:不能直接寫void swap(int i, int j);
因為那隻是臨時變數,函數調用完後,便釋放空間,兩個值並沒有交換。
④ c語言中swap是個什麼函數
swap函數一般是一個程序員自定義函數,是實現兩個變數數值的交換。
1、比如:
int a = 2;
int b =3;
swap(a,b); //一般用到變數數值交換,交換後a=3 b = 2;
2、通過使用臨時變數實現交換。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
(4)c語言調用swapmin函數擴展閱讀
C語言swap函數的使用
#include<stdio.h>
void swap(int *pa,int *pb)
{
int temp;
temp=*pa,*pa=*pb,*pb=temp;
}
void main()
{
int a=10,b=20;
swap(&a,&b);//傳遞的是實參變數a,b的地址
printf("a=%d,b=%d ",a,b);
}
⑤ c語言 函數調用 swap函數 一定要用指針嗎
不一定。
void swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
這樣寫,只是傳了一份拷貝給a,b,交換好後,棧清空,沒有傳回給你原來所要交換的數。而printf放裡面可以是因為你的那份拷貝(即a,b)的值是跟你要交換的數一樣的,所以行得通。
不用指針的方法就是:
void swap(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}
這樣就可以了,這個傳進去的是原先數據的地址,地址都改變了,值也就交換了。
(5)c語言調用swapmin函數擴展閱讀:
關於指針與swap函數
1、用變數的指針交換,其實只是用指針名及指針運算符*訪問變數 ,修改了變數的值。
int temp;
int *pa=&a;
int *pb=&b;
temp=*pa; *pa=*pb;*pb=temp;
2、用變數的引用交換,用」別名「訪問變數
int temp;
int &aa=a;
int &bb=b;
temp=aa; aa=bb;bb=temp;
3、變數直接交換,用變數名訪問變數,修改了變數的值
int temp;
int a=5;
int b=6;
temp=a; a=b; b=temp;
4、2的變形
int* temp;
int* pa=&a; int* pb=&b;
temp=pa; pa=pb;pb=temp;
cout<<*pa<<endls //-----指針交換了指向的地址,如果用*pa訪問變數,此時就算是交換了,但是a和b沒有交換。