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