c语言:请看看这段代码为什么编译出错

/* 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。*/
 #include <stdio.h>
 #include <math.h>
 int IsTheNumber ( const int N );
 int main()
 {
     int n1, n2, i, cnt;
     scanf("%d %d", &n1, &n2);
     cnt = 0;
     for ( i=n1; i<=n2; i++ ) {
         if ( IsTheNumber(i) )
             cnt++;
     }
     printf("cnt = %d\n", cnt);
     return 0;
 }
int IsTheNumber ( const int N )
{
    int b=N;
    int m=sqrt(b);
    int i,a[b],j;
    int cnt=0;
    if (m*m==b) {
        for (i=0; i<b; i++) {
            a[i]=b%10;
            b=b/10;
        }
        for (i=0; i<b; i++) {
            for (j=0; j<b; j++) {
                if (a[i]==a[j]){
                    cnt++;
                    if (cnt>1) {
                        return 1;
                    }
                }
            }
        }
    }
    else
        return 0;
}

只用看IsTheNumber函数部分就可以,编译器非要我给他一个返回值,但是我在if和else里已经给了他返回值

第一个if没有返回值,你可以在第一个if中加返回值,也可以在函数末尾加默认返回值

头文件呢