c中的插入排序片段因Segmentation fault(核心转储)而中止

时间:2016-03-02 11:52:35

标签: c

我在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的新手,所以我需要帮助......

我该怎么办?

1 个答案:

答案 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;
}