在c中快速排序代码,在64位Windows机器上无法解释的行为
Quick sort code in c , unexplained behavior on 64bit windows machine
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("%dn",a[i]);
}
在代码块的运行时,打印乱码,循环在 7 次迭代后不会结束,执行会继续,直到最后出现分段错误。 在命令行上使用 gcc 编译它无济于事。
但是在我的codeforce自定义测试中使用GNU C++ 4.7上运行良好,即它在打印乱码7次后结束。 但给
运行时错误:退出代码为 11
使用 GNU C 4 时
如何解决这个问题?
您的代码有两个问题:
- 正如@Chowlett所提到的,要打印浮点数,您需要使用
%f
,而不是%d
,这涵盖了 gibrish 部分...... - 由于数组的大小是 7,最后一个索引是 6,而不是 7,这可能涵盖了崩溃部分。
您正在尝试使用%d
说明符打印float
,该说明符适用于整数。尝试
printf("%fn", a[i]);
相反。
相关文章:
- 无法解释以下C++代码段的输出
- 数组中无法解释的最后一个项目
- 对于相同的精确计算,无法解释的不同OMP_GET_WTIME()
- C 常量无法解释的行为
- C 无法解释的类“尚未声明”错误,这是由于名称空间而导致的
- [C++]重新定义 y 值的基本数组代码。它正在工作,但无法解释为什么
- std::future::wait 是内存障碍吗?(我无法解释这种数据竞赛)
- unsigned int/signed int/long-long:无法解释的输出
- C++:带有cout和指向char的指针的无法解释的行为
- 我的C++片段中无法解释的断言失败
- C 构造函数中无法解释的调用
- Excel VBA中C++DLL位置存在无法解释的行为
- 无法解释的 VIM 或 GCC 行为
- Marshal.StructureToPtr出现无法解释的内存泄漏
- 为什么这个自定义比较器在构造 std::p riority_queue 时无法解释 std::sort
- QT应用程序无法解释使用SQLite插入功能
- 无法解释的链接器错误
- 无法解释编译器的行为
- C时间混合问题似乎无法解释,以及如何明智地升级代码库
- 在c中快速排序代码,在64位Windows机器上无法解释的行为