if() and for() and while() (et.al.) are functions, not statements. Functions in C require parentheses. Moving away from that would make them statements, and then the language isn't C anymore.
Pulling the most off-the-rails example of switch() and using it to malign an entire function isn't really logically or semantically supportable. Cascading if() clauses are far worse to maintain. The value to switch() is that compilers can (sometimes) convert the code to JMP tables, which is very efficient; the same cannot be done with a waterfall of if() clauses.
The new casting syntax does make for better searching--but it makes for less readable code. On the other hand, there are those who say that if you have to cast at all, you might be taking the wrong approach and a refactor might be in order.
Any feature can be abused; the fact that abuse is possible doesn't require that a feature be removed. It might mean that the abuser needs to be removed, though.