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

【小结】

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

发布了196 篇原创文章 · 获赞 581 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/85871506