void quicksort(float x[],int first,int last)
{
float temp;int j, pivot, i;
if(first<last){
pivot=first;
i=first;
j=last;
while(i<j){
while(x[i]<=x[pivot]&&i<last)
i++;
while(x[j]>x[pivot])
j--;
if(i<j){
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
temp=x[pivot];
x[pivot]=x[j];
x[j]=temp;
quicksort(x,first,j-1);
quicksort(x,j+1,last);
}
}
main()
{
float a[]={4.0,6.0,8.5,9.1,6,11.1,1.1};
//int len=6;
int len=7;
quicksort(a,0,len);
int i=0;
for(i=0;i<len;i++)
printf("%d\n",a[i]);
}
在代码块上运行期间,打印胡言乱语,循环在7次迭代后不会结束执行,直到在结束时出现分段错误为止。在命令行上用gcc编译它是没有帮助的。
但是在我的代码强制使用GNU C++ 4.7的自定义测试上运行得很好,也就是说,它在输出胡言乱语7次之后就结束了。但给了
运行时错误:退出代码为11
使用GNU C4时
如何解决这个问题?
发布于 2013-12-15 07:51:23
您正在尝试使用用于整数的float
说明符打印%d
。试一试
printf("%f\n", a[i]);
而不是。
发布于 2013-12-15 07:53:29
您的代码有两个问题:
%f
,而不是%d
,这涵盖了gibrrish部分.https://stackoverflow.com/questions/20592341
复制相似问题