【問題描述】

由于學習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;
}
}
}
}
【小結】