The code you show has a syntax error (x instead of 'x), and clock never changes.
A transition from a state other than 1’b1 to 1’bx is considered a posedge event. An unknown expression is considered the same as false. So a, b, c, and d are all false.
Just to be clear, always@(clk) block does not execute only when clk transitions from 1->x, in all other cases(0->x, x->0, x->1) it gets executed. Am I right?
Incorrect. @(clk) “executes” on any transition. Table 9-2 in the IEEE 1800-2017 LRM explains all of the possible transitions. In your example, clock is initially x, then you assign it to x. There is no transition.