2016-03-02 54 views
-2

我試圖在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++) { 
        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 

,程序停止中止突然有段錯誤服用輸入

我已經嘗試了很多,但慘遭失敗多次之後...我新的C,所以我需要幫助...

我該怎麼辦?

+1

使用調試器? – Idos

+0

不......我早先經歷了堆棧溢出,發現了一些叫做gdb的東西......但是我不知道如何用它進行調試 – anjanpatel

+1

第一個谷歌搜索結果:http://www.thegeekstuff.com/2010/03/ debug-c-program-using-gdb/ – Idos

回答

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