scanf で数値の後にいれた改行が stdin のバッファに残っている
getchar でバッファに残った改行文字が取り出される

とりあえず

scanf("%d %d", &a, &b);
↓
scanf("%d %d%*[\n]", &a, &b);

または

scanf("%d %d", &a, &b);
↓
scanf("%d %d", &a, &b);
while(getchar()!='\n');

としてみては?