e) After executing *py = *px, are &x and *py equal? (I say yes. py now equals what px was pointing to which was &x)
No.
Oh, yes, I missed that one.
The reason is that you're dereferencing py, which is y, then assigning it to the dereference of px (x). Now y and x are equal, but the question does not ask that, it asks if the dereference of py (y) is equal to the address of x. Chances are that the address of x is not equal to the value of y.