Answer is (d).
All the lines will print the correct address that is the value of variable b(which is equal to address of a since its a pointer), just with different formats. Line one will print the b as a pointer (a hexadecimal value) and line two will print the address represented as integers (%d for decimal representation of integer number and %u for unsigned integer).
The % Format Specifiers
The % specifiers that you can use in ANSI C are:
Usual variable type Display
%c char single character
%d (%i) int signed integer
%e (%E) float or double exponential format
%f float or double signed decimal
%g (%G) float or double use %f or %e as required
%o int unsigned octal value
%p pointer address stored in pointer
%s array of char sequence of characters
%u int unsigned decimal
%x (%X) int unsigned hex value