无法在 C 中显示数组的所有元素?
Cannot display all the element of my array in C?
我的数组有些问题。好吧,我想对包含 5 个整数元素的数组进行排序。但是,当我显示它们时,它只显示最后一个元素,并且它的值不是我期望的排序后的值。
因此,可以帮我解决这个问题吗?
N.B: 这是我的代码
main.h
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: main.h
* Author: Yacin
*
* Created on 19 septembre 2021, 12:49
*/
#ifndef MAIN_H
#define MAIN_H
int sommeTableau(int tab[], int taille);
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);
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* MAIN_H */
main.c - ordonnerTableau 函数:
int * ordonnerTableau(int tab[], int taille){
int tmp;
int i;
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 :\n");
for (int k = 0; k < 5; k++) {
printf("tab[%d]=%d\n",k , dtab[k]);
}
printf("\n");
printf("Après :\n");
for (int j = 0; j < 5; j++) {
printf("tab[%d]=%d \n",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
您不应该使用 5
对数组的大小进行硬编码。相反,您应该使用 sizeof(dtab)/sizeof(dtab[0])
.
在 ordonnerTableau
中你有 taille=5
但你尝试获取 tab
这些位置:tab[j] > tab[j+1]
但不确定 j
j+1
小于 5.
我的数组有些问题。好吧,我想对包含 5 个整数元素的数组进行排序。但是,当我显示它们时,它只显示最后一个元素,并且它的值不是我期望的排序后的值。
因此,可以帮我解决这个问题吗?
N.B: 这是我的代码
main.h
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: main.h
* Author: Yacin
*
* Created on 19 septembre 2021, 12:49
*/
#ifndef MAIN_H
#define MAIN_H
int sommeTableau(int tab[], int taille);
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);
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* MAIN_H */
main.c - ordonnerTableau 函数:
int * ordonnerTableau(int tab[], int taille){
int tmp;
int i;
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 :\n");
for (int k = 0; k < 5; k++) {
printf("tab[%d]=%d\n",k , dtab[k]);
}
printf("\n");
printf("Après :\n");
for (int j = 0; j < 5; j++) {
printf("tab[%d]=%d \n",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
您不应该使用
5
对数组的大小进行硬编码。相反,您应该使用sizeof(dtab)/sizeof(dtab[0])
.在
ordonnerTableau
中你有taille=5
但你尝试获取tab
这些位置:tab[j] > tab[j+1]
但不确定j
j+1
小于 5.