我已经写了一些排序算法。为了简单起见,我选择了一个具有唯一值的小数组。每当我编译代码几次时,我都会得到正确的答案,但是有时我会得到一个带有错误的不同答案。我想知道是什么引起了问题。请注意,我正在使用相同的代码。
我正在使用GCC 4.2.1
我试过在线编译器,它给出了正确的答案。
#include <stdio.h>
int main(){
int i,j,k,l;
int A[10]={2,10,6,24,1,-5,23,0,12,-100};
for(i=0;i<10;i++){
if(A[i+1]<A[i]){
l=A[i+1];
for(j=0;j<=i;j++){
if((A[j]<A[i+1])&&(A[j+1]>A[i+1])){
for(k=i;k>=j;k--){
A[k+1]=A[k];
}
A[j+1]=l;
}
else if(A[0]>A[i+1]){
for(k=i;k>=0;k--){
A[k+1]=A[k];
}
A[0]=l;
}
}
}
}
for(i=0;i<10;i++){
printf("%d\n",A[i]);
}
}
有时它给出:{-100,-5,0,1,2,6,10,12,23,24,}有时它给出:-791216026,-100,-5,0,1,2,6,10 ,12、23,中止陷阱:6
这与您的编译无关。如果您多次运行同一文件,则可能会发生。
由于您正在访问不包含特定值的A [10],因此您的程序可能会以不同的方式运行,如果A [10]中的值大于24,则该值将保持在其位置,并且将打印出正确的响应,否则,它将传播到您的数字之间的某个位置。因此,您丢失了最后一个数字(24),并且数组中有一个随机值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句