【问题描述】

[Error]

由于学习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;
}
}
}
}

 

【小结】

其实这是一个很低级的错误,只不过是自己学习C语言没怎么去专研,希望初学者在学习自定义函数的时候能注意下这个错误。