我用C语言进行培训,我正在做一个创建简单数组并对其进行排序的程序。 这是代码:
Main.c:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, int *argv[])
{
int tab[5]={2,5,3,9,4}, i=0, longueur=0;
/*for(i=0; i<5; i++)
{
tab[i] = i;
}*/
longueur = sizeof(tab)/sizeof(tab[0]);
trierTab(tab,longueur);
afficherTab(tab,longueur);
return 0;
Tableaux.c:
#include "tableaux.h"
//Sort the array
void trierTab(int tab[],int longueur)
{
int i=0, j=0,max=0,indiceMax=0,temp=0;
for(i=longueur-1; i>=1;i--)
{
for(j=0;j<=i;j++)
{
if(tab[j]>max)
{
max = tab[j];
indiceMax = j;
}
}
temp=tab[j];
tab[j]=max;
tab[indiceMax]=temp;
}
}
//Print the array
void afficherTab(int tab[], int longueur)
{
int i=0;
for(i=0;i<longueur;i++)
{
printf("| %d |",tab[i]);
}
}
我猜有一个出界的错误,但我无法弄清楚她在哪里:s 有谁可以帮助我吗 ? ^^
答案 0 :(得分:1)
第一次退出此for循环时:
for(j=0;j<=i;j++)
{
if(tab[j]>max)
{
max = tab[j];
indiceMax = j;
}
}
j
的值为5
。
然后你分配:
temp=tab[j];
所以你正在阅读tab
(temp=tab[5];
)