for (int i = 0; i < 4; i ) {
for (int j = 0; j < 4 - i; j ) {
if (array[j] > array[j 1]) {
swap(array[j], array[j 1]);
}
}
}
printf("Descending : ");
for (int k = 4; 0 <= k; k--) {
printf("%d ", array[k]);
}
我撰寫了用于降序五個型別整數的代碼。有兩種方法可以激活它。第一個是在回圈中使用臨時交換(如,tmp=a, a=b, b=tmp
),第二個是宣告交換函式(void swap(int x, int y){int tmp=x, x=y, y=tmp}
)并在回圈中使用這個 func。第一種方式成功了,但第二種方式失敗了。
我想知道為什么無法啟動回圈中的交換函式。
uj5u.com熱心網友回復:
我撰寫了用于降序五個輸入實數的代碼。
考慮到所提供的代碼(%d
呼叫中使用的轉換說明符prinf
),您的意思似乎是整數而不是實數。
您需要通過指向它們的指標間接參考將交換的物件傳遞給函式。否則該函式將處理原始物件的值的副本。
可以通過以下方式宣告和定義該函式
void swap( int *a, int *b )
{
int tmp = *a;
*a = *b;
*b = tmp;
}
并且可以被稱為
swap( array j, array j 1 );
或者
swap( &array[j], &array[j 1] );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/359198.html
上一篇:行內for回圈python回傳
下一篇:如何將二維串列轉換為資料框