Another technique to add to existing answers:
bool skip_X = false;
if (condition1)
{
// Some processing
if (another condition)
{
//Do some task;
skip_X = true;
}
}
if (!skip_X)
....
This avoids evaluating condition1 twice, which can be problematic if it has side effects or values in the expression could be changed by processing inside the if or even in another thread.
That said...
How can I jump from if block to else block without using goto?
The language has goto for a reason, and - just like people who say "how can my constructor report an error without throwing an exception" - by artificially restricting yourself from using the language feature clearly best suited to your need you create worse code.
if,else ifandelse? Of course this does not mean you should not put it in a function as suggested.