我在c中尝试了一个代码来执行插入排序(Ubuntu 14.04)
#include<stdio.h>
int main()
{
int a[10], i = 0, j = 0, k = 0, temp;
printf("enter array elements\n");
for (i = 0; i < 10; i++) {
scanf("%d",&a[i]);
}
for (i = 1; i < 10; i++) {
for(j = 0; j < i; j++) {
if(a[i] < a[j]) {
temp = a[i];
for(k = i; k > j; k++) {
a[k]=a[k-1];
}
a[j]=temp;
break;
}
}
}
printf ("sorted array\n");
for (i = 0; i < 10; i++) {
printf ("%d ",a[i]);
}
return 0;
}
然后在终端
~$gcc -Wall
~$./a.out
在输入
后,程序突然停止了Segmentation fault我已经尝试了很多但是很多次失败了......我是C的新手,所以我需要帮助......
我该怎么办?
答案 0 :(得分:0)
编码错误
#include<stdio.h>
int main()
{
int a[10], i = 0, j = 0, k = 0, temp;
printf("enter array elements\n");
for (i = 0; i < 10; i++) {
scanf("%d",&a[i]);
}
for (i = 1; i < 10; i++) {
for(j = 0; j < i; j++) {
if(a[i] < a[j]) {
temp = a[i];
for(k = i; k > j; k--) {//insteadof k++
a[k]=a[k-1];
}
a[j]=temp;
break;
}
}
}
printf ("sorted array\n");
for (i = 0; i < 10; i++) {
printf ("%d ",a[i]);
}
return 0;
}