&& じゃなくて || だね。

while( (scanf( "%d",&m ) != 1) || ((m < 1) || (m > 12)) );