你的选择排序的函数传参,传错了,select_sort(a[8],8);应该是select_sort(a,8);
a[8]在C语言中是数组a的第9个元素,而a数组只有8个元素,所以你传了一个越界的数组元素,因此出运行错误
a在C语言中是数组a的第1个元素的指针,所以可以在函数中访问到整个a数组
还有函数的定义那一句void select_sort();应该改成 void select_sort(int a[],int n);
还有需要把if(min!=i)语句移到for-j循环外面,for-i循环里面
还有把printf("%d",a[i]); 改成printf("%d ",a[i]);每输出一个元素加一个空格
完整的C语言程序如下
#include
void select_sort(int a[],int n);
int main(){
int i; int a[8];
printf("请输入8个整数,将为您从小到大排序。\n");
for(i=0;i<8;i++) {
scanf("%d",&a[i]);
}
select_sort(a,8);
for(i=0;i<8;i++) {
printf("%d ",a[i]);
}
return 0;
}
void select_sort(int a[],int n){
int i,j,t,min;
for(i=0;i
min=i;
for(j=i+1;j
if(a[min]>a[j]) min=j;
}
if(min!=i){ //最小值不在i处的情况
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
}
运行结果
请输入8个整数,将为您从小到大排序。
8 71 16 35 43 33 26 18
8 16 18 26 33 35 43 71