C语言 【函数调用】一直出现异常

C语言 【函数调用】一直出现错误?
#include<stdio.h>
int main()
{
  int judge(int,int a[]);
  int a[50],n,max,min,i;    
  scanf("%d",&n); 
  max=min=0;
  for(i=0;i<n;i++)
  {
  scanf("%d",&a[i]);
      if(a[max]<a[i])
  max=i;
      if(a[min]<a[i])
  min=i;
  }
 

    a[max]=a[max]-1;
a[min]=a[min]+1;
while(judge(n,a))
{
  for(i=0;i<n;i++)
  {
    if(a[max]<a[i])
  max=i;
      if(a[min]<a[i])
  min=i;
  }
   a[max]=a[max]-1;
a[min]=a[min]+1;
return 0;
}



  int judge(int,int a[])  //判断a[]是否全部相同
  {  
  int i;
 for(i=1;i<=n;i++);
 {
 if(a[0]!=a[i])
 return TRUE;
 }
 return FALSE ;
 }



错误是:Cpp1.cpp
C:\Users\chenqian\Desktop\c代码\Cpp1.cpp(37) : error C2601: 'judge' : local function definitions are illegal
C:\Users\chenqian\Desktop\c代码\Cpp1.cpp(46) : fatal error C1004: unexpected end of file found
c 语言 函数 function file

------解决方案--------------------

#include<stdio.h>
int main()
{
  int judge(int,int a[]);
  int a[50],n,max,min,i;    
  scanf("%d",&n); 
  max=min=0;
  for(i=0;i<n;i++)
  {
  scanf("%d",&a[i]);
      if(a[max]<a[i])
  max=i;
      if(a[min]<a[i])
  min=i;
  }
 

    a[max]=a[max]-1;
a[min]=a[min]+1;
  while(judge(n,a))
  {
  for(i=0;i<n;i++)
  {
    if(a[max]<a[i])
  max=i;
      if(a[min]<a[i])
  min=i;
  }
   a[max]=a[max]-1;
a[min]=a[min]+1;
  return 0;
  }
}



  int judge(int n ,int a[])  //判断a[]是否全部相同
  {
  int i;
 for(i=1;i<=n;i++);
 {
 if(a[0]!=a[i])
 return 1;
 }
 return 0 ;
 }

C语言 【函数调用】一直出现异常