I'm too busy to join the contest, so here's a nice trick I thought of to avoid semicolons (I don't think it was mentioned before):

a = 3;
-> while(!(a = 3)) {} // same effect, no semicolons
Make sure that you negate (!) when the value you are assigning is non-zero.

It works for any kind of expression, even function calls with a return value:
str_cpy(a, b);
-> while(!str_cpy(a,b)) {}

Another one, should be well known:
int a;
int b;
int* c;
-> int a, b, *c; // 1 semicolon instead of 3

Now you can write code using nearly no semicolons smile