天天看點

[Error] 'sort' was not declared in this scope

【問題描述】

[Error] 'sort' was not declared in this scope

由于學習Java用的編譯器為Eclipse和IDEA今天使用Dev C++練習算法設計編寫一個函數然後去調用另外一個函數,習慣Java裡面編寫類然後調用這個類即可,但是C語言好久沒用,寫一個函數的時候發現我自己把一個函數放到main()函數下面,然後調用的時候出現上述所示。

【解決方法】

>原因一

我想程式在運作的時候估計先是執行了main()函數然後未執行這個sort()函數就顯示我這個sort()未定義,

解決方法:把自己定義的方法放到main()函數上面即可,如下

#include<stdio.h> 
int sort(int a[],int n){
   for(int i=0;i<n;i++){
      for(int j=0;j<n-1;j++){
         if(a[j] > a[j+1]){
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
         }
      }
   }
}
int main()  
{  
   int n,k;
   printf("請輸入元素個數:");
   scanf("%d",&n);
   int a[n];
   printf("請依次輸入元素:");
   for(int i=0;i<=n;i++){
      scanf("%d",&a[i]);
   }
   sort(a,n);
   printf("請輸入第n小元素:");
   scanf("%d",&k);
   for(int i=0;i<=n;i++){
      if(i== k-1){
          printf("請輸入第%d小元素為:%d",k,a[i]);
          break;
      }
      
   } 
 
}      

>原因二

既然說我沒用聲明這個方法那麼我就在main()函數上面去聲明下sort()方法,如下所示

#include<stdio.h> 
int sort(int a[],int n);
int main()  
{  
   int n,k;
   printf("請輸入元素個數:");
   scanf("%d",&n);
   int a[n];
   printf("請依次輸入元素:");
   for(int i=0;i<=n;i++){
      scanf("%d",&a[i]);
   }
   sort(a,n);
   printf("請輸入第n小元素:");
   scanf("%d",&k);
   for(int i=0;i<=n;i++){
      if(i== k-1){
          printf("請輸入第%d小元素為:%d",k,a[i]);
          break;
      }
      
   } 
 
}

int sort(int a[],int n){
   for(int i=0;i<n;i++){
      for(int j=0;j<n-1;j++){
         if(a[j] > a[j+1]){
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
         }
      }
   }
}
      

【小結】