我的陣列遇到了一些麻煩。好吧,我想對一個包含5個整數元素的陣列進行排序。然而,當我顯示它們時,它只顯示了最后一個元素,而且它的值并不是我在排序后所期望的那個。
因此,請幫助我解決這個問題,好嗎?
N.B:這是我的代碼
main.h/*
* 要改變這個許可證頭,請在專案屬性中選擇許可證頭。
* 要改變這個模板檔案,請選擇工具|模板
* 并在編輯器中打開該模板。
*/
/*
* 檔案:main.h
* 作者。Yacin
*
* 創建于2021年9月19日,12:49
*/
#ifndef MAIN_H
#define MAIN_H
int sommeTableau(int tab[], int taille) /span>。
int moyenneTableau(int tab[], int taille) ;
int * copieTableau(int tab1[] 。int tab2[], int taille) ;
int * valMaxTableau(int tab[] 。int taille, int valMax)。
int * ordonnerTableau(int tab[], int taille) /span>;
#ifdef __cplusplus
extern "C"/span> {
#endif
#ifdef __cplusplus
}
#endif
#endif /* MAIN_H */
main.c - ordonnerTableau函式 :
int * ordonnerTableau(int tab[] 。int taille){
int tmp;
inti;
for (i = 0; i < taille; i ){
int j = 0;
while(tab[j] > tab[j 1]){
tmp = tab[j];
tab[j] = tab[j 1]。
tab[j 1] = tmp;
j ;
}
}
return tab。
}
main.c - 主函式 :
int main(int argc, char** argv) {
int dtab[5] = {12, 9, 2, 1, 0}。
printf("Avant :
")。)
for (int k = 0; k < 5; k ) {
printf("tab[%d]=%d
",k , dtab[k])。)
}
printf("
")。)
printf("Après :
")。)
for (int j = 0; j < 5; j ) {
printf("tab[%d]=%d
",j ,*(ordonnerTableau(dtab, 5) j))。
}
輸出 :
Avant :
tab[0]=12。
tab[1]=9。
tab[2]=2
tab[3]=1
tab[4]=0。
Après :
tab[4]=0
預期輸出 :
dtab[5] = {0, 1,2,9,12}。
如果有任何幫助,我們將不勝感激。
感謝您。
問候。
YT
uj5u.com熱心網友回復:
你不應該使用
5來硬編碼陣列的大小。 相反,你應該使用sizeof(dtab)/sizeof(dtab[0])。在
ordonnerTableau中,你有taille=5但是你試圖在這些位置上獲取tab。tab[j] > tab[j 1]而不確定j和j 1小于5。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329583.html
標籤:
