It's no problem, the questions are designed to help, but perhaps you're not going to spot this one without a little direct help.
return b[size-1][size-1]; does NOT return the whole of array b, it just returns the single integer at b[size-1][size-1], i.e. b, which is in fact undefined because only b[0..1][0..1] are defined. The four integers at b[0..1][0..1] (in the case that size=3), are not returned, and so b[size-1][size-1]=cofactor(a,m,n); only assigns a single integer to b, which is in fact the famous buffer overflow bug you may have heard so much about, because the memory at b is not part of b but belongs to some other part of your program.
My recommendation therefore is to pass b into cofactor() rather than trying to return it, i.e.:
void cofactor(int a[size][size], int m, int n,int b[size-1][size-1])
and in main:
Then cofactor() updates the b in main directly, rather than trying to update its own copy. The return statement only returns a single value.
With this change I get the following output:
Enter row index=1
Enter column index=1
The matrix is
1 2 3
4 5 6
7 8 9
Cofactor of a is
which is what you were expecting.