For the first question, there is another way using XOR
a = a^y;
y=a^y;
a=a^y;
(2) reverse of a number would be to
int reverse(unsigned int iNumber)
{
int theReversed= 0;
int theCopy= iNumber;
while(iNumber!= 0)
{
theReversed= theReversed * 10 + iNumber % 10;
iNumber /= 10;
}
return theReversed;
}