mmm..
anche cosi':
codice:
long pow(unsigned int base,unsigned int exp)
{
//0^0 non esiste
if (base==exp==0)return -1;

unsigned int res=1;

for(i=1;i<exp;i++)res*=base;
return res;
}
naturalmente devi gestire l'overflow..

edit:
non puoi usare unsigned int come valore di ritorno perche' in caso di 0^0 non puoi gestirti il -1