Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c中的插入排序片段因分段错误而中止(核心转储)_C - Fatal编程技术网

c中的插入排序片段因分段错误而中止(核心转储)

c中的插入排序片段因分段错误而中止(核心转储),c,C,我尝试用c语言编写代码来执行插入排序(Ubuntu 14.04) 在接受输入后,程序因分段错误而突然停止 我试了很多次,但是失败了很多次。。。我是C新手,所以我需要帮助 我该怎么办???编码错误 #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++) {

我尝试用c语言编写代码来执行插入排序(Ubuntu 14.04)

在接受输入后,程序因分段错误而突然停止

我试了很多次,但是失败了很多次。。。我是C新手,所以我需要帮助

我该怎么办???

编码错误

#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;
}
#包括
int main()
{
INTA[10],i=0,j=0,k=0,温度;
printf(“输入数组元素\n”);
对于(i=0;i<10;i++){
scanf(“%d”、&a[i]);
}
对于(i=1;i<10;i++){
对于(j=0;jj;k--){//而不是k++
a[k]=a[k-1];
}
a[j]=温度;
打破
}
}
}
printf(“排序数组\n”);
对于(i=0;i<10;i++){
printf(“%d”,a[i]);
}
返回0;
}

是否使用了调试器?第一个谷歌结果:如果您希望其他人阅读您的代码,请缩进您的代码并使用传统的编码样式。替换
k>j
k在for循环中。您需要在
k
小于
j
时运行循环,否则k将继续增加并超出限制。您可以这样运行gdb:像这样编译
gcc-Wall-g
,然后
gdb./a.out
。然后输入
r
Enter
启动程序。输入所有输入并使程序崩溃后,可以键入
bt full
查看程序崩溃的位置。我得到这个:
(gdb)bt full#0 0x00000000000400697在main()中,在a.c:14a={1,2,3,4,5,6,7,8,9,9}I=9j=0k=1128temp=0
,换句话说。k的值很奇怪->这部分代码对于(k=i;k>j;k++)似乎是错误的

~$gcc -Wall
~$./a.out
#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;
}